class MyIntrospector : JpqlPropertyIntrospector() {
override fun introspect(property: KCallable<*>): JpqlPropertyDescription? {
if (property is KFunction1<*, *>) {
// ๋๋ง์ ๊ท์น์ผ๋ก ์ด๋ฆ์ ์ถ๋ก ํฉ๋๋ค
val name = ...
return MyProperty(name)
}
return null
}
private data class MyProperty(
override val name: String,
) : JpqlPropertyDescription
}
val myModule = object : JpqlRenderModule {
override fun setupModule(context: JpqlRenderModule.SetupContext) {
context.prependIntrospector(MyIntrospector())
}
}
val myContext = JpqlRenderContext().registerModule(myModule)
Expression
// SELECT Book.isbn FROM Book AS Book WHERE Book.isbn.value = :param1
jpql {
select(
path(Book::isbn),
).from(
entity(Book::class),
).where(
path(Book::isbn)(Ibsn::value).eq("01"),
)
}