Spring supports
Spring Boot AutoConfigure
Kotlin JDSL supports Spring Boot AutoConfigure. If your project has both Spring Boot and com.linecorp.kotlin-jdsl:spring-data-jpa-support or com.linecorp.kotlin-jdsl:spring-batch-support dependencies, AutoConfiguration automatically creates the JpqlRenderContext bean.
If you declare your JpqlSerializer or JpqlIntrospector as a bean, it will be included with the JpqlRenderContext bean.
Spring Data Repository
If your JpaRepository extends KotlinJdslJpqlExecutor, you can use the extension provided by Kotlin JDSL.
interface BookRepository : JpaRepository<Book, Isbn>, KotlinJdslJpqlExecutor
val result: List<Isbn?> = bookRepository.findAll {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
val result: Page<Isbn?> = bookRepository.findPage(pageable) {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
val result: Slice<Isbn?> = bookRepository.findSlice(pageable) {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
val result: Stream<Isbn?> = bookRepository.findStream {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}Spring Batch
Spring Batch provides JpaPagingItemReader and JpaCursorItemReader for querying data with JPQL. Kotlin JDSL provides KotlinJdslQueryProvider so that a JPQL query created in DSL can be executed in it.
@Auwoired
lateinit var queryProviderFactory: KotlinJdslQueryProviderFactory
val queryProvider = queryProviderFactory.create {
select(
path(Book::isbn)
).from(
entity(Book::class),
)
}
JpaCursorItemReaderBuilder<Isbn>()
.entityManagerFactory(entityManagerFactory)
.queryProvider(queryProvider)
.saveState(false)
.build()Last updated