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
Was this helpful?