Available in versions: Dev (3.18) | Latest (3.17) | 3.16 | 3.15 | 3.14

KotlinGenerator

Applies to ✅ Open Source Edition   ✅ Express Edition   ✅ Professional Edition   ✅ Enterprise Edition

jOOQ can generate Kotlin code instead of Java code, which allows for leveraging a few kotlin language features also in generated code.

In order to use the KotlinGenerator, simply place the following class reference into your code generation configuration:

XML (standalone and maven)
Programmatic
Gradle
<configuration>
  <generator>
    <name>org.jooq.codegen.KotlinGenerator</name>
  </generator>
</configuration>

See the configuration XSD, standalone code generation, and maven code generation for more details.

new org.jooq.meta.jaxb.Configuration()
  .withGenerator(new Generator()
    .withName("org.jooq.codegen.KotlinGenerator")
  )

See the configuration XSD andprogrammatic code generation for more details.

myConfigurationName(sourceSets.main) {
  generator {
    name = 'org.jooq.codegen.KotlinGenerator'
  }
}

See the configuration XSD andgradle code generation for more details.

Most of the code generation configuration remains the same for as long as it's independent of the generation language. But there are a few kotlin specific configuration flags, which are documented below:

XML (standalone and maven)
Programmatic
Gradle
<configuration>
  <generator>
    <generate>
      
      <!--  Workaround for Kotlin generating setX() setters instead of setIsX() in byte code for mutable properties called 
            <code>isX</code>. Default is true. -->
      <kotlinSetterJvmNameAnnotationsOnIsPrefix>true</kotlinSetterJvmNameAnnotationsOnIsPrefix>
      
      <!-- Generate POJOs as data classes, when using the KotlinGenerator. Default is true. -->
      <pojosAsKotlinDataClasses>true</pojosAsKotlinDataClasses>
    </generate>
  </generator>
</configuration>

See the configuration XSD, standalone code generation, and maven code generation for more details.

new org.jooq.meta.jaxb.Configuration()
  .withGenerator(
    new Generate()

      // Workaround for Kotlin generating setX() setters instead of setIsX() in byte code for mutable properties called 
      // <code>isX</code>. Default is true.
      .withKotlinSetterJvmNameAnnotationsOnIsPrefix(true)

      // Generate POJOs as data classes, when using the KotlinGenerator. Default is true.
      .withPojosAsKotlinDataClasses(true)
  )

See the configuration XSD andprogrammatic code generation for more details.

myConfigurationName(sourceSets.main) {
  generator {
    generate {

      // Workaround for Kotlin generating setX() setters instead of setIsX() in byte code for mutable properties called 
      // <code>isX</code>. Default is true.
      kotlinSetterJvmNameAnnotationsOnIsPrefix = true

      // Generate POJOs as data classes, when using the KotlinGenerator. Default is true.
      pojosAsKotlinDataClasses = true
    }
  }
}

See the configuration XSD andgradle code generation for more details.

Feedback

Do you have any feedback about this page? We'd love to hear it!

The jOOQ Logo