Articles of jooq

JOOQ con Gradle y Kotlin no generan files

Tengo la siguiente tarea de gradle en mi build.gradle.kts . Se supone que debe generar files desde mis entidades JPA. Sin embargo, al ejecutar esta tarea, al suceder, no se genera ningún file o directory. task(name = "generateJooq") { doLast { val configuration = Configuration().apply { generator = Generator().apply { database = Database().apply { name […]

JOOQ selecciona la expresión

Estoy tratando de build una consulta select / groupby en una tabla de postgres TABLE con una columna JSON TAGS en JOOQ: val select = arrayOf(DSL.field("{0}->>{1}", String::class.java, TABLE.TAGS, DSL.inline(fields[0])), DSL.sum(TABLE.VALUE)) val groupBy = arrayOf(DSL.field("{0}->>{1}", String::class.java, TABLE.TAGS, DSL.inline(fields[0])) dsl() .select(select) .from(TABLE) .groupBy(groupBy) .fetch() Recibo errores que dicen que select() espera Array<SelectField<?>> pero mi expresión es de […]

testing JOOQ postgres jsonb column for key exists

Tengo una tabla TABLE que contiene una columna jsonb llamada tags . El elemento de tags en cada fila puede contener o no un campo llamado group . Mi objective es agrupar por tags.group para todas las filas donde las tags contienen un campo de group . Como la siguiente consulta postgres: select tags->>'group' as […]

Valor de campo de sum de JOOQ: BigDecimal a Int

Estoy usando postgres con un campo de valor que es numeric . JOOQ lo convierte en BigDecimal . Mi consulta JOOQ es: val sumField = DSL.sum(TABLE.VALUE) val query = dsl().select(TABLE.id.`as`("id"), sumField.`as`("sum")) .from(TABLE) .groupBy(TABLE.id) .fetch() .map{ record -> SumById( id = record.get("id").toString(), sum = record.get("sum").toString().toInt() ) } donde SumById es una class de datos con campos […]

Cómo inyectar el context DSL de JOOQ en la class Kotlin

Estoy usando JOOQ con Kotlin, Spring y PostgreSQL. Puedo ejecutar el generador de JOOQ y los datos de consulta. El problema es que no puedo inyectar DSLcontext en el constructor de class de repository. Lanza la siguiente exception: El campo dslContext en someRepository requería un bean de tipo org.jooq.DSLContext que no se pudo encontrar. La […]

Transacciones de Jooq: las conexiones no se liberan al set, si se lanza una exception en la transacción

Estoy usando HikariCP con Jooq. El código: * En Kotlin: //dataSource is from Hikari DSL.using(dataSource, sqlDialect).transaction { config -> //in create it simply calls dsl.insertInto …. UserRepo.create(User(name="joe"), DSL.using(config)) UserRepo.create(User(name="foo"), DSL.using(config)) } Y todo funciona bien Pero si tiro en bloque, las conexiones no se cierran (se liberan) (aunque la transacción se revierte). ACTUALIZAR: Soy nuevo […]

¿Cómo puedo reutilizar / componer parte de una consulta JOOQ en un método de repository?

Con una variable JOOQ DSLContext ctx tengo un método para seleccionar todos los datos de relación. open fun selectAllSomethings(id: String): List<SomeDto> = ctx .select(..), .from(..) .join(..) .leftJoin(…) .fetch() .map() Y necesito reutilizar esta lógica con un método add donde para una id concreta quiero cambiar el código para usar fetchOne y map . ¿Cómo puedo […]

¿Cómo puedo usar más fácilmente las transactions de Jooq en Kotlin?

Tengo el código Jooq escrito en Kotlin usando transactions, y algunas veces quiero que un método funcione de manera autónoma como una acción de nivel superior que tendrá sus propias transactions, y otras veces quiere que funcione compuesto con otros methods dentro de la misma transacción. Por ejemplo, tengo dos funciones de nivel inferior, actionAbc […]