├── .codecov.yml
├── .editorconfig
├── .githook
├── pre-commit-default.sh
├── pre-commit-macos.sh
└── pre-commit-windows.sh
├── .github
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── lint.yaml
│ ├── publish.yaml
│ └── test.yaml
├── .gitignore
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── benchmark
├── build.gradle.kts
└── src
│ └── main
│ ├── kotlin
│ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── benchmark
│ │ ├── render
│ │ └── jpql
│ │ │ ├── JpqlRenderBenchmark.kt
│ │ │ └── introspector
│ │ │ ├── JakartaJpqlIntrospectorBenchmark.kt
│ │ │ └── JpqlRenderIntrospectorBenchmark.kt
│ │ └── sample
│ │ ├── annotation
│ │ └── CompositeId.kt
│ │ ├── entity
│ │ ├── Entities.kt
│ │ ├── author
│ │ │ └── Author.kt
│ │ ├── book
│ │ │ ├── Book.kt
│ │ │ ├── BookAuthor.kt
│ │ │ ├── BookPrice.kt
│ │ │ ├── BookPublisher.kt
│ │ │ └── Isbn.kt
│ │ ├── department
│ │ │ └── Department.kt
│ │ ├── employee
│ │ │ ├── Employee.kt
│ │ │ ├── EmployeeAddress.kt
│ │ │ ├── EmployeeDepartment.kt
│ │ │ ├── EmployeeSalary.kt
│ │ │ ├── FullTimeEmployee.kt
│ │ │ └── PartTimeEmployee.kt
│ │ └── publisher
│ │ │ └── Publisher.kt
│ │ └── query
│ │ ├── Queries.kt
│ │ ├── delete
│ │ └── DeleteQuery1.kt
│ │ ├── select
│ │ ├── SelectQuery1.kt
│ │ ├── SelectQuery2.kt
│ │ ├── SelectQuery3.kt
│ │ └── SelectQuery4.kt
│ │ └── update
│ │ └── UpdateQuery1.kt
│ └── resources
│ └── logback.xml
├── build.gradle.kts
├── commitlint.config.js
├── docs
├── en
│ ├── README.md
│ ├── SUMMARY.md
│ ├── faq
│ │ ├── how-can-i-see-the-generated-query.md
│ │ ├── how-do-i-use-kotlin-value-class.md
│ │ ├── what-is-the-difference-between-kotlin-jdsl-and-jooq-and-querydsl.md
│ │ └── why-is-there-a-support-module-that-only-has-a-nullable-return-type.md
│ ├── jpql-with-kotlin-jdsl
│ │ ├── README.md
│ │ ├── custom-dsl.md
│ │ ├── entities.md
│ │ ├── expressions.md
│ │ ├── migration-2.x-to-3.x.md
│ │ ├── paths.md
│ │ ├── predicates.md
│ │ ├── sorts.md
│ │ ├── spring-supports.md
│ │ ├── statements.md
│ │ └── subqueries.md
│ └── kotlin-jdsl-roadmap.md
└── ko
│ ├── README.md
│ ├── SUMMARY.md
│ ├── faq
│ ├── how-can-i-see-the-generated-query.md
│ ├── how-do-i-use-kotlin-value-class.md
│ ├── what-is-the-difference-between-kotlin-jdsl-and-jooq-and-querydsl.md
│ └── why-is-there-a-support-module-that-only-has-a-nullable-return-type.md
│ ├── jpql-with-kotlin-jdsl.md
│ ├── jpql-with-kotlin-jdsl
│ ├── README.md
│ ├── custom-dsl.md
│ ├── entities.md
│ ├── expressions.md
│ ├── migration-2.x-to-3.x.md
│ ├── paths.md
│ ├── predicates.md
│ ├── sorts.md
│ ├── spring-supports.md
│ ├── statements.md
│ └── subqueries.md
│ └── kotlin-jdsl-roadmap.md
├── dsl
├── build.gradle.kts
└── jpql
│ ├── build.gradle.kts
│ └── src
│ ├── main
│ └── kotlin
│ │ ├── com
│ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── dsl
│ │ │ └── jpql
│ │ │ ├── Jpql.kt
│ │ │ ├── JpqlDsl.kt
│ │ │ ├── delete
│ │ │ ├── DeleteQueryWhereStep.kt
│ │ │ └── impl
│ │ │ │ ├── DeleteQueryBuilder.kt
│ │ │ │ └── DeleteQueryDsl.kt
│ │ │ ├── expression
│ │ │ ├── CaseElseStep.kt
│ │ │ ├── CaseThenFirstStep.kt
│ │ │ ├── CaseThenStep.kt
│ │ │ ├── CaseValueElseStep.kt
│ │ │ ├── CaseValueThenFirstStep.kt
│ │ │ ├── CaseValueThenStep.kt
│ │ │ ├── CaseValueWhenFirstStep.kt
│ │ │ ├── CaseValueWhenStep.kt
│ │ │ ├── CaseWhenStep.kt
│ │ │ ├── TrimFromStep.kt
│ │ │ └── impl
│ │ │ │ ├── CaseBuilder.kt
│ │ │ │ ├── CaseDsl.kt
│ │ │ │ ├── CaseThenFirstStepDsl.kt
│ │ │ │ ├── CaseValueBuilder.kt
│ │ │ │ ├── CaseValueDsl.kt
│ │ │ │ ├── CaseValueThenFirstStepDsl.kt
│ │ │ │ ├── CaseValueWhenFirstStepDsl.kt
│ │ │ │ ├── TrimBothDsl.kt
│ │ │ │ ├── TrimBothFromStepDsl.kt
│ │ │ │ ├── TrimDsl.kt
│ │ │ │ ├── TrimFromStepDsl.kt
│ │ │ │ ├── TrimLeadingDsl.kt
│ │ │ │ ├── TrimLeadingFromStepDsl.kt
│ │ │ │ ├── TrimTrailingDsl.kt
│ │ │ │ └── TrimTrailingFromStepDsl.kt
│ │ │ ├── join
│ │ │ ├── AssociationJoinAsStep.kt
│ │ │ ├── AssociationJoinOnStep.kt
│ │ │ ├── JoinAsStep.kt
│ │ │ ├── JoinOnStep.kt
│ │ │ └── impl
│ │ │ │ ├── AssociationFetchJoinBuilder.kt
│ │ │ │ ├── AssociationFetchJoinDsl.kt
│ │ │ │ ├── AssociationJoinBuilder.kt
│ │ │ │ ├── AssociationJoinDsl.kt
│ │ │ │ ├── FetchJoinBuilder.kt
│ │ │ │ ├── FetchJoinDsl.kt
│ │ │ │ ├── JoinBuilder.kt
│ │ │ │ └── JoinDsl.kt
│ │ │ ├── select
│ │ │ ├── SelectQueryFromStep.kt
│ │ │ ├── SelectQueryGroupByStep.kt
│ │ │ ├── SelectQueryHavingStep.kt
│ │ │ ├── SelectQueryOrderByStep.kt
│ │ │ ├── SelectQueryWhereStep.kt
│ │ │ └── impl
│ │ │ │ ├── SelectQueryBuilder.kt
│ │ │ │ ├── SelectQueryDsl.kt
│ │ │ │ └── SelectQueryFromStepDsl.kt
│ │ │ ├── sort
│ │ │ ├── SortNullsStep.kt
│ │ │ └── impl
│ │ │ │ ├── SortBuilder.kt
│ │ │ │ └── SortDsl.kt
│ │ │ └── update
│ │ │ ├── UpdateQuerySetFirstStep.kt
│ │ │ ├── UpdateQuerySetStep.kt
│ │ │ ├── UpdateQueryWhereStep.kt
│ │ │ └── impl
│ │ │ ├── UpdateQueryBuilder.kt
│ │ │ ├── UpdateQueryDsl.kt
│ │ │ └── UpdateQuerySetStepFirstDsl.kt
│ │ └── kotlin
│ │ └── internal
│ │ └── InferenceAnnotations.kt
│ ├── test
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── dsl
│ │ └── jpql
│ │ ├── delete
│ │ ├── DeleteFromDslTest.kt
│ │ └── WhereDslTest.kt
│ │ ├── entity
│ │ ├── DerivedEntityDslTest.kt
│ │ ├── EntityDslTest.kt
│ │ └── TreatDslTest.kt
│ │ ├── expression
│ │ ├── AbsDslTest.kt
│ │ ├── AliasDslTest.kt
│ │ ├── AvgDslTest.kt
│ │ ├── CaseValueDslTest.kt
│ │ ├── CaseWhenDslTest.kt
│ │ ├── CeilingDslTest.kt
│ │ ├── CoalesceDslTest.kt
│ │ ├── ConcatDslTest.kt
│ │ ├── CountDslTest.kt
│ │ ├── CurrentDateDslTest.kt
│ │ ├── CurrentTimeDslTest.kt
│ │ ├── CurrentTimestampTest.kt
│ │ ├── CustomExpressionDslTest.kt
│ │ ├── DivDslTest.kt
│ │ ├── ExpDslTest.kt
│ │ ├── ExpressionDslTest.kt
│ │ ├── FloorDslTest.kt
│ │ ├── FunctionDslTest.kt
│ │ ├── IndexDslTest.kt
│ │ ├── LengthDslTest.kt
│ │ ├── LiteralDslTest.kt
│ │ ├── LnDslTest.kt
│ │ ├── LocalDateDslTest.kt
│ │ ├── LocalDateTimeDslTest.kt
│ │ ├── LocalTimeDslTest.kt
│ │ ├── LocateDslTest.kt
│ │ ├── LowerDslTest.kt
│ │ ├── MaxDslTest.kt
│ │ ├── MinDslTest.kt
│ │ ├── MinusDslTest.kt
│ │ ├── ModDslTest.kt
│ │ ├── NewDslTest.kt
│ │ ├── NullIfDslTest.kt
│ │ ├── ParamDslTest.kt
│ │ ├── PlusDslTest.kt
│ │ ├── PowerDslTest.kt
│ │ ├── RoundDslTest.kt
│ │ ├── SignDslTest.kt
│ │ ├── SizeDslTest.kt
│ │ ├── SqrtDslTest.kt
│ │ ├── SubqueryDslTest.kt
│ │ ├── SubstringDslTest.kt
│ │ ├── SumDslTest.kt
│ │ ├── TimesDslTest.kt
│ │ ├── TrimBothDslTest.kt
│ │ ├── TrimDslTest.kt
│ │ ├── TrimLeadingDslTest.kt
│ │ ├── TrimTrailingDslTest.kt
│ │ ├── TypeDslTest.kt
│ │ ├── UpperDslTest.kt
│ │ └── ValueDslTest.kt
│ │ ├── join
│ │ └── JoinDslTest.kt
│ │ ├── path
│ │ ├── PathDslTest.kt
│ │ └── TreatDslTest.kt
│ │ ├── predicate
│ │ ├── AndDslTest.kt
│ │ ├── BetweenDslTest.kt
│ │ ├── CustomPredicateDslTest.kt
│ │ ├── EqualDslTest.kt
│ │ ├── ExistsDslTest.kt
│ │ ├── FunctionDslTest.kt
│ │ ├── GreaterThanDslTest.kt
│ │ ├── GreaterThanOrEqualToDslTest.kt
│ │ ├── InDslTest.kt
│ │ ├── IsEmptyDslTest.kt
│ │ ├── IsNullDslTest.kt
│ │ ├── LessThanDslTest.kt
│ │ ├── LessThanOrEqualToDslTest.kt
│ │ ├── LikeDslTest.kt
│ │ ├── NotDslTest.kt
│ │ └── OrDslTest.kt
│ │ ├── select
│ │ ├── FromDslTest.kt
│ │ ├── GroupByDslTest.kt
│ │ ├── HavingDslTest.kt
│ │ ├── OrderByDslTest.kt
│ │ ├── SelectDslTest.kt
│ │ └── WhereDslTest.kt
│ │ ├── sort
│ │ └── SortDslTest.kt
│ │ └── update
│ │ ├── UpdateSetDslTest.kt
│ │ └── WhereDslTest.kt
│ └── testFixtures
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── dsl
│ └── jpql
│ ├── QueryPartExtensions.kt
│ └── entity
│ ├── author
│ └── Author.kt
│ ├── book
│ ├── Book.kt
│ ├── BookAuthor.kt
│ ├── BookAuthorType.kt
│ ├── BookPublisher.kt
│ └── Isbn.kt
│ ├── department
│ └── Department.kt
│ ├── employee
│ ├── Employee.kt
│ ├── EmployeeAddress.kt
│ ├── EmployeeDepartment.kt
│ ├── FullTimeEmployee.kt
│ └── PartTimeEmployee.kt
│ └── publisher
│ └── Publisher.kt
├── example
├── README.md
├── build.gradle.kts
├── eclipselink-javax
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── eclipselink
│ │ │ │ └── javax
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ └── entity
│ │ │ │ ├── author
│ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ ├── Book.kt
│ │ │ │ ├── BookAuthor.kt
│ │ │ │ ├── BookPrice.kt
│ │ │ │ ├── BookPublisher.kt
│ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ ├── Employee.kt
│ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ └── Publisher.kt
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── persistence.xml
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── example
│ │ │ └── eclipselink
│ │ │ └── javax
│ │ │ ├── delete
│ │ │ └── DeleteExample.kt
│ │ │ ├── select
│ │ │ └── SelectExample.kt
│ │ │ └── update
│ │ │ └── UpdateExample.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── eclipselink
│ │ └── javax
│ │ ├── EntityManagerFactoryTestUtils.kt
│ │ ├── jpql
│ │ └── JpqlRenderContextUtils.kt
│ │ └── reader
│ │ └── MultipleLinesSqlCommandFileReader.kt
├── eclipselink
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── eclipselink
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ └── entity
│ │ │ │ ├── author
│ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ ├── Book.kt
│ │ │ │ ├── BookAuthor.kt
│ │ │ │ ├── BookPrice.kt
│ │ │ │ ├── BookPublisher.kt
│ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ ├── Employee.kt
│ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ └── Publisher.kt
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── persistence.xml
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── example
│ │ │ └── eclipselink
│ │ │ ├── delete
│ │ │ └── DeleteExample.kt
│ │ │ ├── select
│ │ │ └── SelectExample.kt
│ │ │ └── update
│ │ │ └── UpdateExample.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── eclipselink
│ │ ├── EntityManagerFactoryTestUtils.kt
│ │ ├── jpql
│ │ └── JpqlRenderContextUtils.kt
│ │ └── reader
│ │ └── MultipleLinesSqlCommandFileReader.kt
├── hibernate-javax
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── jpql
│ │ │ │ └── hibernate
│ │ │ │ └── javax
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ └── entity
│ │ │ │ ├── author
│ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ ├── Book.kt
│ │ │ │ ├── BookAuthor.kt
│ │ │ │ ├── BookPrice.kt
│ │ │ │ ├── BookPublisher.kt
│ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ ├── Employee.kt
│ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ └── Publisher.kt
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── persistence.xml
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── example
│ │ │ └── jpql
│ │ │ └── hibernate
│ │ │ └── javax
│ │ │ ├── delete
│ │ │ └── DeleteExample.kt
│ │ │ ├── select
│ │ │ └── SelectExample.kt
│ │ │ └── update
│ │ │ └── UpdateExample.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── jpql
│ │ └── hibernate
│ │ ├── EntityManagerFactoryTestUtils.kt
│ │ └── jpql
│ │ └── JpqlRenderContextUtils.kt
├── hibernate-reactive-javax
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── hibernate
│ │ │ │ └── reactive
│ │ │ │ └── javax
│ │ │ │ └── jpql
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ ├── configuration
│ │ │ │ ├── H2DBConnectionPool.kt
│ │ │ │ └── H2DBConnectionPoolConfiguration.kt
│ │ │ │ └── entity
│ │ │ │ ├── author
│ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ ├── Book.kt
│ │ │ │ ├── BookAuthor.kt
│ │ │ │ ├── BookPrice.kt
│ │ │ │ ├── BookPublisher.kt
│ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ ├── Employee.kt
│ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ └── Publisher.kt
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ └── persistence.xml
│ │ │ └── logback.xml
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── example
│ │ │ └── hibernate
│ │ │ └── reactive
│ │ │ └── javax
│ │ │ └── jpql
│ │ │ ├── delete
│ │ │ ├── DeleteMutinySessionExample.kt
│ │ │ ├── DeleteMutinyStatelessSessionExample.kt
│ │ │ ├── DeleteStageSessionExample.kt
│ │ │ └── DeleteStageStatelessSessionExample.kt
│ │ │ ├── select
│ │ │ ├── SelectMutinySessionExample.kt
│ │ │ ├── SelectMutinyStatelessSessionExample.kt
│ │ │ ├── SelectStageSessionExample.kt
│ │ │ └── SelectStageStatelessSessionExample.kt
│ │ │ └── update
│ │ │ ├── UpdateMutinySessionExample.kt
│ │ │ ├── UpdateMutinyStatelessSessionExample.kt
│ │ │ ├── UpdateStageSessionExample.kt
│ │ │ └── UpdateStageStatelessSessionExample.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── hibernate
│ │ └── reactive
│ │ ├── SessionFactoryTestUtils.kt
│ │ └── jpql
│ │ └── JpqlRenderContextUtils.kt
├── hibernate-reactive
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── hibernate
│ │ │ │ └── reactive
│ │ │ │ └── jakarta
│ │ │ │ └── jpql
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ ├── configuration
│ │ │ │ ├── H2DBConnectionPool.kt
│ │ │ │ └── H2DBConnectionPoolConfiguration.kt
│ │ │ │ └── entity
│ │ │ │ ├── author
│ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ ├── Book.kt
│ │ │ │ ├── BookAuthor.kt
│ │ │ │ ├── BookPrice.kt
│ │ │ │ ├── BookPublisher.kt
│ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ ├── Employee.kt
│ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ └── Publisher.kt
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ └── persistence.xml
│ │ │ └── logback.xml
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── example
│ │ │ └── hibernate
│ │ │ └── reactive
│ │ │ └── jakarta
│ │ │ └── jpql
│ │ │ ├── delete
│ │ │ ├── DeleteMutinySessionExample.kt
│ │ │ ├── DeleteMutinyStatelessSessionExample.kt
│ │ │ ├── DeleteStageSessionExample.kt
│ │ │ └── DeleteStageStatelessSessionExample.kt
│ │ │ ├── select
│ │ │ ├── SelectMutinySessionExample.kt
│ │ │ ├── SelectMutinyStatelessSessionExample.kt
│ │ │ ├── SelectStageSessionExample.kt
│ │ │ └── SelectStageStatelessSessionExample.kt
│ │ │ └── update
│ │ │ ├── UpdateMutinySessionExample.kt
│ │ │ ├── UpdateMutinyStatelessSessionExample.kt
│ │ │ ├── UpdateStageSessionExample.kt
│ │ │ └── UpdateStageStatelessSessionExample.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── hibernate
│ │ └── reactive
│ │ ├── SessionFactoryTestUtils.kt
│ │ └── jpql
│ │ └── JpqlRenderContextUtils.kt
├── hibernate
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── jpql
│ │ │ │ └── hibernate
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ └── entity
│ │ │ │ ├── author
│ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ ├── Book.kt
│ │ │ │ ├── BookAuthor.kt
│ │ │ │ ├── BookPrice.kt
│ │ │ │ ├── BookPublisher.kt
│ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ ├── Employee.kt
│ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ └── Publisher.kt
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── persistence.xml
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── example
│ │ │ └── jpql
│ │ │ └── hibernate
│ │ │ ├── delete
│ │ │ └── DeleteExample.kt
│ │ │ ├── select
│ │ │ └── SelectExample.kt
│ │ │ └── update
│ │ │ └── UpdateExample.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── jpql
│ │ └── hibernate
│ │ ├── EntityManagerFactoryTestUtils.kt
│ │ └── jpql
│ │ └── JpqlRenderContextUtils.kt
├── spring-batch-javax
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── spring
│ │ │ │ └── batch
│ │ │ │ └── javax
│ │ │ │ └── jpql
│ │ │ │ ├── Application.kt
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ ├── entity
│ │ │ │ ├── author
│ │ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ │ ├── Book.kt
│ │ │ │ │ ├── BookAuthor.kt
│ │ │ │ │ ├── BookPrice.kt
│ │ │ │ │ ├── BookPublisher.kt
│ │ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ │ ├── Employee.kt
│ │ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ │ └── Publisher.kt
│ │ │ │ └── repository
│ │ │ │ ├── author
│ │ │ │ └── AuthorRepository.kt
│ │ │ │ ├── book
│ │ │ │ └── BookRepository.kt
│ │ │ │ ├── department
│ │ │ │ └── DepartmentRepository.kt
│ │ │ │ ├── employee
│ │ │ │ └── EmployeeRepository.kt
│ │ │ │ └── publisher
│ │ │ │ └── PublisherRepository.kt
│ │ └── resources
│ │ │ └── application.yml
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── spring
│ │ └── batch
│ │ └── javax
│ │ └── jpql
│ │ └── BatchExampleTest.kt
├── spring-batch
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── spring
│ │ │ │ └── batch
│ │ │ │ └── jpql
│ │ │ │ ├── Application.kt
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ ├── entity
│ │ │ │ ├── author
│ │ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ │ ├── Book.kt
│ │ │ │ │ ├── BookAuthor.kt
│ │ │ │ │ ├── BookPrice.kt
│ │ │ │ │ ├── BookPublisher.kt
│ │ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ │ ├── Employee.kt
│ │ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ │ └── Publisher.kt
│ │ │ │ └── repository
│ │ │ │ ├── author
│ │ │ │ └── AuthorRepository.kt
│ │ │ │ ├── book
│ │ │ │ └── BookRepository.kt
│ │ │ │ ├── department
│ │ │ │ └── DepartmentRepository.kt
│ │ │ │ ├── employee
│ │ │ │ └── EmployeeRepository.kt
│ │ │ │ └── publisher
│ │ │ │ └── PublisherRepository.kt
│ │ └── resources
│ │ │ └── application.yml
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── spring
│ │ └── batch
│ │ └── jpql
│ │ └── BatchExampleTest.kt
├── spring-data-jpa-javax
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── spring
│ │ │ │ └── data
│ │ │ │ └── jpa
│ │ │ │ └── javax
│ │ │ │ └── jpql
│ │ │ │ ├── Application.kt
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ ├── entity
│ │ │ │ ├── author
│ │ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ │ ├── Book.kt
│ │ │ │ │ ├── BookAuthor.kt
│ │ │ │ │ ├── BookPrice.kt
│ │ │ │ │ ├── BookPublisher.kt
│ │ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ │ ├── Employee.kt
│ │ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ │ └── Publisher.kt
│ │ │ │ └── repository
│ │ │ │ ├── author
│ │ │ │ └── AuthorRepository.kt
│ │ │ │ ├── book
│ │ │ │ └── BookRepository.kt
│ │ │ │ ├── department
│ │ │ │ └── DepartmentRepository.kt
│ │ │ │ ├── employee
│ │ │ │ └── EmployeeRepository.kt
│ │ │ │ └── publisher
│ │ │ │ └── PublisherRepository.kt
│ │ └── resources
│ │ │ └── application.yml
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── spring
│ │ └── data
│ │ └── jpa
│ │ └── javax
│ │ └── jpql
│ │ ├── delete
│ │ └── DeleteExample.kt
│ │ ├── select
│ │ └── SelectExample.kt
│ │ └── update
│ │ └── UpdateExample.kt
├── spring-data-jpa
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── example
│ │ │ │ └── spring
│ │ │ │ └── data
│ │ │ │ └── jpa
│ │ │ │ └── jpql
│ │ │ │ ├── Application.kt
│ │ │ │ ├── annotation
│ │ │ │ └── CompositeId.kt
│ │ │ │ ├── entity
│ │ │ │ ├── author
│ │ │ │ │ └── Author.kt
│ │ │ │ ├── book
│ │ │ │ │ ├── Book.kt
│ │ │ │ │ ├── BookAuthor.kt
│ │ │ │ │ ├── BookPrice.kt
│ │ │ │ │ ├── BookPublisher.kt
│ │ │ │ │ └── Isbn.kt
│ │ │ │ ├── department
│ │ │ │ │ └── Department.kt
│ │ │ │ ├── employee
│ │ │ │ │ ├── Employee.kt
│ │ │ │ │ ├── EmployeeAddress.kt
│ │ │ │ │ ├── EmployeeDepartment.kt
│ │ │ │ │ ├── EmployeeSalary.kt
│ │ │ │ │ ├── FullTimeEmployee.kt
│ │ │ │ │ └── PartTimeEmployee.kt
│ │ │ │ └── publisher
│ │ │ │ │ └── Publisher.kt
│ │ │ │ └── repository
│ │ │ │ ├── author
│ │ │ │ └── AuthorRepository.kt
│ │ │ │ ├── book
│ │ │ │ └── BookRepository.kt
│ │ │ │ ├── department
│ │ │ │ └── DepartmentRepository.kt
│ │ │ │ ├── employee
│ │ │ │ └── EmployeeRepository.kt
│ │ │ │ └── publisher
│ │ │ │ └── PublisherRepository.kt
│ │ └── resources
│ │ │ └── application.yml
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── example
│ │ └── spring
│ │ └── data
│ │ └── jpa
│ │ └── jpql
│ │ ├── delete
│ │ └── DeleteExample.kt
│ │ ├── select
│ │ └── SelectExample.kt
│ │ └── update
│ │ └── UpdateExample.kt
└── src
│ └── main
│ └── resources
│ ├── data.sql
│ ├── drop.sql
│ └── schema.sql
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── libs.example.versions.toml
├── libs.versions.toml
├── open_source_licenses.txt
├── package.json
├── query-model
├── build.gradle.kts
├── jpql
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ └── kotlin
│ │ │ ├── com
│ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── querymodel
│ │ │ │ └── jpql
│ │ │ │ ├── JpqlQuery.kt
│ │ │ │ ├── JpqlQueryable.kt
│ │ │ │ ├── delete
│ │ │ │ ├── DeleteQueries.kt
│ │ │ │ ├── DeleteQuery.kt
│ │ │ │ └── impl
│ │ │ │ │ └── JpqlDeleteQuery.kt
│ │ │ │ ├── entity
│ │ │ │ ├── Entities.kt
│ │ │ │ ├── Entity.kt
│ │ │ │ ├── Entityable.kt
│ │ │ │ └── impl
│ │ │ │ │ ├── JpqlDerivedEntity.kt
│ │ │ │ │ ├── JpqlEntity.kt
│ │ │ │ │ └── JpqlEntityTreat.kt
│ │ │ │ ├── expression
│ │ │ │ ├── Expression.kt
│ │ │ │ ├── Expressionable.kt
│ │ │ │ ├── Expressions.kt
│ │ │ │ ├── Subquery.kt
│ │ │ │ └── impl
│ │ │ │ │ ├── JpqlAbs.kt
│ │ │ │ │ ├── JpqlAliasedExpression.kt
│ │ │ │ │ ├── JpqlAvg.kt
│ │ │ │ │ ├── JpqlCaseValue.kt
│ │ │ │ │ ├── JpqlCaseWhen.kt
│ │ │ │ │ ├── JpqlCeiling.kt
│ │ │ │ │ ├── JpqlCoalesce.kt
│ │ │ │ │ ├── JpqlConcat.kt
│ │ │ │ │ ├── JpqlCount.kt
│ │ │ │ │ ├── JpqlCurrentDate.kt
│ │ │ │ │ ├── JpqlCurrentTime.kt
│ │ │ │ │ ├── JpqlCurrentTimestamp.kt
│ │ │ │ │ ├── JpqlCustomExpression.kt
│ │ │ │ │ ├── JpqlDivide.kt
│ │ │ │ │ ├── JpqlEntityType.kt
│ │ │ │ │ ├── JpqlExp.kt
│ │ │ │ │ ├── JpqlExpression.kt
│ │ │ │ │ ├── JpqlExpressionParentheses.kt
│ │ │ │ │ ├── JpqlFloor.kt
│ │ │ │ │ ├── JpqlFunctionExpression.kt
│ │ │ │ │ ├── JpqlLength.kt
│ │ │ │ │ ├── JpqlLiteral.kt
│ │ │ │ │ ├── JpqlLn.kt
│ │ │ │ │ ├── JpqlLocalDate.kt
│ │ │ │ │ ├── JpqlLocalDateTime.kt
│ │ │ │ │ ├── JpqlLocalTime.kt
│ │ │ │ │ ├── JpqlLocate.kt
│ │ │ │ │ ├── JpqlLower.kt
│ │ │ │ │ ├── JpqlMax.kt
│ │ │ │ │ ├── JpqlMin.kt
│ │ │ │ │ ├── JpqlMinus.kt
│ │ │ │ │ ├── JpqlMod.kt
│ │ │ │ │ ├── JpqlNew.kt
│ │ │ │ │ ├── JpqlNull.kt
│ │ │ │ │ ├── JpqlNullIf.kt
│ │ │ │ │ ├── JpqlParam.kt
│ │ │ │ │ ├── JpqlPathType.kt
│ │ │ │ │ ├── JpqlPlus.kt
│ │ │ │ │ ├── JpqlPower.kt
│ │ │ │ │ ├── JpqlRound.kt
│ │ │ │ │ ├── JpqlSign.kt
│ │ │ │ │ ├── JpqlSize.kt
│ │ │ │ │ ├── JpqlSqrt.kt
│ │ │ │ │ ├── JpqlSubquery.kt
│ │ │ │ │ ├── JpqlSubstring.kt
│ │ │ │ │ ├── JpqlSum.kt
│ │ │ │ │ ├── JpqlTimes.kt
│ │ │ │ │ ├── JpqlTrim.kt
│ │ │ │ │ ├── JpqlTrimBoth.kt
│ │ │ │ │ ├── JpqlTrimLeading.kt
│ │ │ │ │ ├── JpqlTrimTrailing.kt
│ │ │ │ │ ├── JpqlUpper.kt
│ │ │ │ │ └── JpqlValue.kt
│ │ │ │ ├── from
│ │ │ │ ├── From.kt
│ │ │ │ ├── Fromable.kt
│ │ │ │ ├── Froms.kt
│ │ │ │ └── impl
│ │ │ │ │ └── JpqlJoinedEntity.kt
│ │ │ │ ├── join
│ │ │ │ ├── Join.kt
│ │ │ │ ├── JoinType.kt
│ │ │ │ ├── Joinable.kt
│ │ │ │ ├── Joins.kt
│ │ │ │ └── impl
│ │ │ │ │ ├── JpqlInnerAssociationFetchJoin.kt
│ │ │ │ │ ├── JpqlInnerAssociationJoin.kt
│ │ │ │ │ ├── JpqlInnerFetchJoin.kt
│ │ │ │ │ ├── JpqlInnerJoin.kt
│ │ │ │ │ ├── JpqlLeftAssociationFetchJoin.kt
│ │ │ │ │ ├── JpqlLeftAssociationJoin.kt
│ │ │ │ │ ├── JpqlLeftFetchJoin.kt
│ │ │ │ │ └── JpqlLeftJoin.kt
│ │ │ │ ├── path
│ │ │ │ ├── Path.kt
│ │ │ │ ├── Pathable.kt
│ │ │ │ ├── Paths.kt
│ │ │ │ └── impl
│ │ │ │ │ ├── JpqlEntityProperty.kt
│ │ │ │ │ ├── JpqlPathProperty.kt
│ │ │ │ │ └── JpqlPathTreat.kt
│ │ │ │ ├── predicate
│ │ │ │ ├── Predicatable.kt
│ │ │ │ ├── Predicate.kt
│ │ │ │ ├── Predicates.kt
│ │ │ │ └── impl
│ │ │ │ │ ├── JpqlAnd.kt
│ │ │ │ │ ├── JpqlBetween.kt
│ │ │ │ │ ├── JpqlCustomPredicate.kt
│ │ │ │ │ ├── JpqlEqual.kt
│ │ │ │ │ ├── JpqlEqualAll.kt
│ │ │ │ │ ├── JpqlEqualAny.kt
│ │ │ │ │ ├── JpqlExists.kt
│ │ │ │ │ ├── JpqlFunctionPredicate.kt
│ │ │ │ │ ├── JpqlGreaterThan.kt
│ │ │ │ │ ├── JpqlGreaterThanAll.kt
│ │ │ │ │ ├── JpqlGreaterThanAny.kt
│ │ │ │ │ ├── JpqlGreaterThanOrEqualTo.kt
│ │ │ │ │ ├── JpqlGreaterThanOrEqualToAll.kt
│ │ │ │ │ ├── JpqlGreaterThanOrEqualToAny.kt
│ │ │ │ │ ├── JpqlIn.kt
│ │ │ │ │ ├── JpqlInSubquery.kt
│ │ │ │ │ ├── JpqlIndex.kt
│ │ │ │ │ ├── JpqlIsEmpty.kt
│ │ │ │ │ ├── JpqlIsNotEmpty.kt
│ │ │ │ │ ├── JpqlIsNotNull.kt
│ │ │ │ │ ├── JpqlIsNull.kt
│ │ │ │ │ ├── JpqlLessThan.kt
│ │ │ │ │ ├── JpqlLessThanAll.kt
│ │ │ │ │ ├── JpqlLessThanAny.kt
│ │ │ │ │ ├── JpqlLessThanOrEqualTo.kt
│ │ │ │ │ ├── JpqlLessThanOrEqualToAll.kt
│ │ │ │ │ ├── JpqlLessThanOrEqualToAny.kt
│ │ │ │ │ ├── JpqlLike.kt
│ │ │ │ │ ├── JpqlNot.kt
│ │ │ │ │ ├── JpqlNotBetween.kt
│ │ │ │ │ ├── JpqlNotEqual.kt
│ │ │ │ │ ├── JpqlNotEqualAll.kt
│ │ │ │ │ ├── JpqlNotEqualAny.kt
│ │ │ │ │ ├── JpqlNotExists.kt
│ │ │ │ │ ├── JpqlNotIn.kt
│ │ │ │ │ ├── JpqlNotInSubquery.kt
│ │ │ │ │ ├── JpqlNotLike.kt
│ │ │ │ │ ├── JpqlOr.kt
│ │ │ │ │ └── JpqlPredicateParentheses.kt
│ │ │ │ ├── select
│ │ │ │ ├── SelectQueries.kt
│ │ │ │ ├── SelectQuery.kt
│ │ │ │ └── impl
│ │ │ │ │ └── JpqlSelectQuery.kt
│ │ │ │ ├── sort
│ │ │ │ ├── Sort.kt
│ │ │ │ ├── Sortable.kt
│ │ │ │ ├── Sorts.kt
│ │ │ │ └── impl
│ │ │ │ │ └── JpqlSort.kt
│ │ │ │ └── update
│ │ │ │ ├── UpdateQueries.kt
│ │ │ │ ├── UpdateQuery.kt
│ │ │ │ └── impl
│ │ │ │ └── JpqlUpdateQuery.kt
│ │ │ └── kotlin
│ │ │ └── internal
│ │ │ └── InferenceAnnotations.kt
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── querymodel
│ │ │ └── jpql
│ │ │ ├── delete
│ │ │ └── DeleteQueriesTest.kt
│ │ │ ├── entity
│ │ │ └── EntitiesTest.kt
│ │ │ ├── expression
│ │ │ └── ExpressionsTest.kt
│ │ │ ├── from
│ │ │ └── FromsTest.kt
│ │ │ ├── join
│ │ │ └── JoinsTest.kt
│ │ │ ├── path
│ │ │ └── PathsTest.kt
│ │ │ ├── predicate
│ │ │ └── PredicatesTest.kt
│ │ │ ├── select
│ │ │ └── SelectQueriesTest.kt
│ │ │ ├── sort
│ │ │ └── SortsTest.kt
│ │ │ └── update
│ │ │ └── UpdateQueriesTest.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── querymodel
│ │ └── jpql
│ │ └── entity
│ │ ├── author
│ │ └── Author.kt
│ │ ├── book
│ │ ├── Book.kt
│ │ ├── BookAuthor.kt
│ │ ├── BookAuthorType.kt
│ │ ├── BookPublisher.kt
│ │ └── Isbn.kt
│ │ ├── department
│ │ └── Department.kt
│ │ ├── employee
│ │ ├── Employee.kt
│ │ ├── EmployeeAddress.kt
│ │ ├── EmployeeDepartment.kt
│ │ ├── FullTimeEmployee.kt
│ │ └── PartTimeEmployee.kt
│ │ └── publisher
│ │ └── Publisher.kt
└── src
│ └── main
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── querymodel
│ ├── Query.kt
│ ├── QueryPart.kt
│ └── Queryable.kt
├── render
├── build.gradle.kts
├── jpql
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── render
│ │ │ └── jpql
│ │ │ ├── JpqlRenderContext.kt
│ │ │ ├── JpqlRenderModule.kt
│ │ │ ├── JpqlRendered.kt
│ │ │ ├── JpqlRenderedParams.kt
│ │ │ ├── JpqlRenderer.kt
│ │ │ ├── introspector
│ │ │ ├── CombinedJpqlIntrospector.kt
│ │ │ ├── JpqlEntityDescription.kt
│ │ │ ├── JpqlEntityIntrospector.kt
│ │ │ ├── JpqlIntrospector.kt
│ │ │ ├── JpqlIntrospectorModifier.kt
│ │ │ ├── JpqlPropertyDescription.kt
│ │ │ ├── JpqlPropertyIntrospector.kt
│ │ │ ├── JpqlRenderIntrospector.kt
│ │ │ └── impl
│ │ │ │ ├── JakartaJpqlIntrospector.kt
│ │ │ │ ├── JavaxJpqlIntrospector.kt
│ │ │ │ └── KotlinStyleJpqlPropertyIntrospector.kt
│ │ │ ├── serializer
│ │ │ ├── JpqlRenderClause.kt
│ │ │ ├── JpqlRenderSerializer.kt
│ │ │ ├── JpqlRenderStatement.kt
│ │ │ ├── JpqlSerializer.kt
│ │ │ ├── JpqlSerializerModifier.kt
│ │ │ ├── impl
│ │ │ │ ├── JpqlAbsSerializer.kt
│ │ │ │ ├── JpqlAliasedExpressionSerializer.kt
│ │ │ │ ├── JpqlAndSerializer.kt
│ │ │ │ ├── JpqlAvgSerializer.kt
│ │ │ │ ├── JpqlBetweenSerializer.kt
│ │ │ │ ├── JpqlCaseValueSerializer.kt
│ │ │ │ ├── JpqlCaseWhenSerializer.kt
│ │ │ │ ├── JpqlCeilingSerializer.kt
│ │ │ │ ├── JpqlCoalesceSerializer.kt
│ │ │ │ ├── JpqlConcatSerializer.kt
│ │ │ │ ├── JpqlCountSerializer.kt
│ │ │ │ ├── JpqlCurrentDateSerializer.kt
│ │ │ │ ├── JpqlCurrentTimeSerializer.kt
│ │ │ │ ├── JpqlCurrentTimestampSerializer.kt
│ │ │ │ ├── JpqlCustomExpressionSerializer.kt
│ │ │ │ ├── JpqlCustomPredicateSerializer.kt
│ │ │ │ ├── JpqlDeleteQuerySerializer.kt
│ │ │ │ ├── JpqlDerivedEntitySerializer.kt
│ │ │ │ ├── JpqlDivideSerializer.kt
│ │ │ │ ├── JpqlEntityPropertySerializer.kt
│ │ │ │ ├── JpqlEntitySerializer.kt
│ │ │ │ ├── JpqlEntityTreatSerializer.kt
│ │ │ │ ├── JpqlEntityTypeSerializer.kt
│ │ │ │ ├── JpqlEqualAllSerializer.kt
│ │ │ │ ├── JpqlEqualAnySerializer.kt
│ │ │ │ ├── JpqlEqualSerializer.kt
│ │ │ │ ├── JpqlExistsSerializer.kt
│ │ │ │ ├── JpqlExpSerializer.kt
│ │ │ │ ├── JpqlExpressionParenthesesSerializer.kt
│ │ │ │ ├── JpqlExpressionSerializer.kt
│ │ │ │ ├── JpqlFloorSerializer.kt
│ │ │ │ ├── JpqlFunctionExpressionSerializer.kt
│ │ │ │ ├── JpqlFunctionPredicateSerializer.kt
│ │ │ │ ├── JpqlGreaterThanAllSerializer.kt
│ │ │ │ ├── JpqlGreaterThanAnySerializer.kt
│ │ │ │ ├── JpqlGreaterThanOrEqualToAllSerializer.kt
│ │ │ │ ├── JpqlGreaterThanOrEqualToAnySerializer.kt
│ │ │ │ ├── JpqlGreaterThanOrEqualToSerializer.kt
│ │ │ │ ├── JpqlGreaterThanSerializer.kt
│ │ │ │ ├── JpqlInSerializer.kt
│ │ │ │ ├── JpqlInSubquerySerializer.kt
│ │ │ │ ├── JpqlIndexSerializer.kt
│ │ │ │ ├── JpqlInnerAssociationFetchJoinSerializer.kt
│ │ │ │ ├── JpqlInnerAssociationJoinSerializer.kt
│ │ │ │ ├── JpqlInnerFetchJoinSerializer.kt
│ │ │ │ ├── JpqlInnerJoinSerializer.kt
│ │ │ │ ├── JpqlIsEmptySerializer.kt
│ │ │ │ ├── JpqlIsNotEmptySerializer.kt
│ │ │ │ ├── JpqlIsNotNullSerializer.kt
│ │ │ │ ├── JpqlIsNullSerializer.kt
│ │ │ │ ├── JpqlJoinedEntitySerializer.kt
│ │ │ │ ├── JpqlLeftAssociationFetchJoinSerializer.kt
│ │ │ │ ├── JpqlLeftAssociationJoinSerializer.kt
│ │ │ │ ├── JpqlLeftFetchJoinSerializer.kt
│ │ │ │ ├── JpqlLeftJoinSerializer.kt
│ │ │ │ ├── JpqlLengthSerializer.kt
│ │ │ │ ├── JpqlLessThanAllSerializer.kt
│ │ │ │ ├── JpqlLessThanAnySerializer.kt
│ │ │ │ ├── JpqlLessThanOrEqualToAllSerializer.kt
│ │ │ │ ├── JpqlLessThanOrEqualToAnySerializer.kt
│ │ │ │ ├── JpqlLessThanOrEqualToSerializer.kt
│ │ │ │ ├── JpqlLessThanSerializer.kt
│ │ │ │ ├── JpqlLikeSerializer.kt
│ │ │ │ ├── JpqlLiteralSerializer.kt
│ │ │ │ ├── JpqlLnSerializer.kt
│ │ │ │ ├── JpqlLocalDateSerializer.kt
│ │ │ │ ├── JpqlLocalDateTimeSerializer.kt
│ │ │ │ ├── JpqlLocalTimeSerializer.kt
│ │ │ │ ├── JpqlLocateSerializer.kt
│ │ │ │ ├── JpqlLowerSerializer.kt
│ │ │ │ ├── JpqlMaxSerializer.kt
│ │ │ │ ├── JpqlMinSerializer.kt
│ │ │ │ ├── JpqlMinusSerializer.kt
│ │ │ │ ├── JpqlModSerializer.kt
│ │ │ │ ├── JpqlNewSerializer.kt
│ │ │ │ ├── JpqlNotBetweenSerializer.kt
│ │ │ │ ├── JpqlNotEqualAllSerializer.kt
│ │ │ │ ├── JpqlNotEqualAnySerializer.kt
│ │ │ │ ├── JpqlNotEqualSerializer.kt
│ │ │ │ ├── JpqlNotExistsSerializer.kt
│ │ │ │ ├── JpqlNotInSerializer.kt
│ │ │ │ ├── JpqlNotInSubquerySerializer.kt
│ │ │ │ ├── JpqlNotLikeSerializer.kt
│ │ │ │ ├── JpqlNotSerializer.kt
│ │ │ │ ├── JpqlNullIfSerializer.kt
│ │ │ │ ├── JpqlNullSerializer.kt
│ │ │ │ ├── JpqlOrSerializer.kt
│ │ │ │ ├── JpqlParamSerializer.kt
│ │ │ │ ├── JpqlPathPropertySerializer.kt
│ │ │ │ ├── JpqlPathTreatSerializer.kt
│ │ │ │ ├── JpqlPathTypeSerializer.kt
│ │ │ │ ├── JpqlPlusSerializer.kt
│ │ │ │ ├── JpqlPowerSerializer.kt
│ │ │ │ ├── JpqlPredicateParenthesesSerializer.kt
│ │ │ │ ├── JpqlRoundSerializer.kt
│ │ │ │ ├── JpqlSelectQuerySerializer.kt
│ │ │ │ ├── JpqlSignSerializer.kt
│ │ │ │ ├── JpqlSizeSerializer.kt
│ │ │ │ ├── JpqlSortSerializer.kt
│ │ │ │ ├── JpqlSqrtSerializer.kt
│ │ │ │ ├── JpqlSubquerySerializer.kt
│ │ │ │ ├── JpqlSubstringSerializer.kt
│ │ │ │ ├── JpqlSumSerializer.kt
│ │ │ │ ├── JpqlTimesSerializer.kt
│ │ │ │ ├── JpqlTrimBothSerializer.kt
│ │ │ │ ├── JpqlTrimLeadingSerializer.kt
│ │ │ │ ├── JpqlTrimSerializer.kt
│ │ │ │ ├── JpqlTrimTrailingSerializer.kt
│ │ │ │ ├── JpqlUpdateQuerySerializer.kt
│ │ │ │ ├── JpqlUpperSerializer.kt
│ │ │ │ └── JpqlValueSerializer.kt
│ │ │ └── support
│ │ │ │ ├── JpqlFunctionSerializerSupport.kt
│ │ │ │ └── JpqlTemplateSerializerSupport.kt
│ │ │ └── writer
│ │ │ ├── JpqlWriter.kt
│ │ │ └── impl
│ │ │ └── DefaultJpqlWriter.kt
│ │ ├── test
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── render
│ │ │ └── jpql
│ │ │ ├── introspector
│ │ │ ├── CombinedJpqlIntrospectorTest.kt
│ │ │ └── impl
│ │ │ │ ├── JakartaJpqlIntrospectorTest.kt
│ │ │ │ ├── JavaxJpqlIntrospectorTest.kt
│ │ │ │ └── KotlinStyleJpqlPropertyIntrospectorTest.kt
│ │ │ ├── serializer
│ │ │ └── impl
│ │ │ │ ├── JpqlAbsSerializerTest.kt
│ │ │ │ ├── JpqlAliasedExpressionSerializerTest.kt
│ │ │ │ ├── JpqlAndSerializerTest.kt
│ │ │ │ ├── JpqlAvgSerializerTest.kt
│ │ │ │ ├── JpqlBetweenSerializerTest.kt
│ │ │ │ ├── JpqlCaseValueSerializerTest.kt
│ │ │ │ ├── JpqlCaseWhenSerializerTest.kt
│ │ │ │ ├── JpqlCeilingSerializerTest.kt
│ │ │ │ ├── JpqlCoalesceSerializerTest.kt
│ │ │ │ ├── JpqlConcatSerializerTest.kt
│ │ │ │ ├── JpqlCountSerializerTest.kt
│ │ │ │ ├── JpqlCurrentDateSerializerTest.kt
│ │ │ │ ├── JpqlCurrentTimeSerializerTest.kt
│ │ │ │ ├── JpqlCurrentTimestampSerializerTest.kt
│ │ │ │ ├── JpqlCustomExpressionSerializerTest.kt
│ │ │ │ ├── JpqlCustomPredicateSerializerTest.kt
│ │ │ │ ├── JpqlDeleteQuerySerializerTest.kt
│ │ │ │ ├── JpqlDerivedEntitySerializerTest.kt
│ │ │ │ ├── JpqlDivideSerializerTest.kt
│ │ │ │ ├── JpqlEntityPropertySerializerTest.kt
│ │ │ │ ├── JpqlEntitySerializerTest.kt
│ │ │ │ ├── JpqlEntityTreatSerializerTest.kt
│ │ │ │ ├── JpqlEntityTypeSerializerTest.kt
│ │ │ │ ├── JpqlEqualAllSerializerTest.kt
│ │ │ │ ├── JpqlEqualAnySerializerTest.kt
│ │ │ │ ├── JpqlEqualSerializerTest.kt
│ │ │ │ ├── JpqlExistsSerializerTest.kt
│ │ │ │ ├── JpqlExpSerializerTest.kt
│ │ │ │ ├── JpqlExpressionParenthesesSerializerTest.kt
│ │ │ │ ├── JpqlExpressionSerializerTest.kt
│ │ │ │ ├── JpqlFloorSerializerTest.kt
│ │ │ │ ├── JpqlFunctionExpressionSerializerTest.kt
│ │ │ │ ├── JpqlFunctionPredicateSerializerTest.kt
│ │ │ │ ├── JpqlGreaterThanAllSerializerTest.kt
│ │ │ │ ├── JpqlGreaterThanAnySerializerTest.kt
│ │ │ │ ├── JpqlGreaterThanOrEqualToAllSerializerTest.kt
│ │ │ │ ├── JpqlGreaterThanOrEqualToAnySerializerTest.kt
│ │ │ │ ├── JpqlGreaterThanOrEqualToSerializerTest.kt
│ │ │ │ ├── JpqlGreaterThanSerializerTest.kt
│ │ │ │ ├── JpqlInSerializerTest.kt
│ │ │ │ ├── JpqlInSubquerySerializerTest.kt
│ │ │ │ ├── JpqlIndexSerializerTest.kt
│ │ │ │ ├── JpqlInnerAssociationFetchJoinSerializerTest.kt
│ │ │ │ ├── JpqlInnerAssociationJoinSerializerTest.kt
│ │ │ │ ├── JpqlInnerFetchJoinSerializerTest.kt
│ │ │ │ ├── JpqlInnerJoinSerializerTest.kt
│ │ │ │ ├── JpqlIsEmptySerializerTest.kt
│ │ │ │ ├── JpqlIsNotEmptySerializerTest.kt
│ │ │ │ ├── JpqlIsNotNullSerializerTest.kt
│ │ │ │ ├── JpqlIsNullSerializerTest.kt
│ │ │ │ ├── JpqlJoinedEntitySerializerTest.kt
│ │ │ │ ├── JpqlLeftAssociationFetchJoinSerializerTest.kt
│ │ │ │ ├── JpqlLeftAssociationJoinSerializerTest.kt
│ │ │ │ ├── JpqlLeftFetchJoinSerializerTest.kt
│ │ │ │ ├── JpqlLeftJoinSerializerTest.kt
│ │ │ │ ├── JpqlLengthSerializerTest.kt
│ │ │ │ ├── JpqlLessThanAllSerializerTest.kt
│ │ │ │ ├── JpqlLessThanAnySerializerTest.kt
│ │ │ │ ├── JpqlLessThanOrEqualToAllSerializerTest.kt
│ │ │ │ ├── JpqlLessThanOrEqualToAnySerializerTest.kt
│ │ │ │ ├── JpqlLessThanOrEqualToSerializerTest.kt
│ │ │ │ ├── JpqlLessThanSerializerTest.kt
│ │ │ │ ├── JpqlLikeSerializerTest.kt
│ │ │ │ ├── JpqlLiteralSerializerTest.kt
│ │ │ │ ├── JpqlLnSerializerTest.kt
│ │ │ │ ├── JpqlLocalDateSerializerTest.kt
│ │ │ │ ├── JpqlLocalDateTimeSerializerTest.kt
│ │ │ │ ├── JpqlLocalTimeSerializerTest.kt
│ │ │ │ ├── JpqlLocateSerializerTest.kt
│ │ │ │ ├── JpqlLowerSerializerTest.kt
│ │ │ │ ├── JpqlMaxSerializerTest.kt
│ │ │ │ ├── JpqlMinSerializerTest.kt
│ │ │ │ ├── JpqlMinusSerializerTest.kt
│ │ │ │ ├── JpqlModSerializerTest.kt
│ │ │ │ ├── JpqlNewSerializerTest.kt
│ │ │ │ ├── JpqlNotBetweenSerializerTest.kt
│ │ │ │ ├── JpqlNotEqualAllSerializerTest.kt
│ │ │ │ ├── JpqlNotEqualAnySerializerTest.kt
│ │ │ │ ├── JpqlNotEqualSerializerTest.kt
│ │ │ │ ├── JpqlNotExistsSerializerTest.kt
│ │ │ │ ├── JpqlNotInSerializerTest.kt
│ │ │ │ ├── JpqlNotInSubquerySerializerTest.kt
│ │ │ │ ├── JpqlNotLikeSerializerTest.kt
│ │ │ │ ├── JpqlNotSerializerTest.kt
│ │ │ │ ├── JpqlNullIfSerializerTest.kt
│ │ │ │ ├── JpqlNullSerializerTest.kt
│ │ │ │ ├── JpqlOrSerializerTest.kt
│ │ │ │ ├── JpqlParamSerializerTest.kt
│ │ │ │ ├── JpqlPathPropertySerializerTest.kt
│ │ │ │ ├── JpqlPathTreatSerializerTest.kt
│ │ │ │ ├── JpqlPathTypeSerializerTest.kt
│ │ │ │ ├── JpqlPlusSerializerTest.kt
│ │ │ │ ├── JpqlPowerSerializerTest.kt
│ │ │ │ ├── JpqlPredicateParenthesesSerializerTest.kt
│ │ │ │ ├── JpqlRoundSerializerTest.kt
│ │ │ │ ├── JpqlSelectQuerySerializerTest.kt
│ │ │ │ ├── JpqlSignSerializerTest.kt
│ │ │ │ ├── JpqlSizeSerializerTest.kt
│ │ │ │ ├── JpqlSortSerializerTest.kt
│ │ │ │ ├── JpqlSqrtSerializerTest.kt
│ │ │ │ ├── JpqlSubquerySerializerTest.kt
│ │ │ │ ├── JpqlSubstringSerializerTest.kt
│ │ │ │ ├── JpqlSumSerializerTest.kt
│ │ │ │ ├── JpqlTimesSerializerTest.kt
│ │ │ │ ├── JpqlTrimBothSerializerTest.kt
│ │ │ │ ├── JpqlTrimLeadingSerializerTest.kt
│ │ │ │ ├── JpqlTrimSerializerTest.kt
│ │ │ │ ├── JpqlTrimTrailingSerializerTest.kt
│ │ │ │ ├── JpqlUpdateQuerySerializerTest.kt
│ │ │ │ ├── JpqlUpperSerializerTest.kt
│ │ │ │ └── JpqlValueSerializerTest.kt
│ │ │ └── writer
│ │ │ └── impl
│ │ │ └── DefaultJpqlWriterTest.kt
│ │ └── testFixtures
│ │ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── render
│ │ └── jpql
│ │ ├── entity
│ │ ├── author
│ │ │ └── Author.kt
│ │ ├── book
│ │ │ ├── Book.kt
│ │ │ ├── BookAuthor.kt
│ │ │ ├── BookAuthorType.kt
│ │ │ ├── BookPublisher.kt
│ │ │ └── Isbn.kt
│ │ ├── department
│ │ │ └── Department.kt
│ │ ├── employee
│ │ │ ├── Employee.kt
│ │ │ ├── EmployeeAddress.kt
│ │ │ ├── EmployeeDepartment.kt
│ │ │ ├── FullTimeEmployee.kt
│ │ │ └── PartTimeEmployee.kt
│ │ └── publisher
│ │ │ └── Publisher.kt
│ │ └── serializer
│ │ ├── JpqlSerializerExtension.kt
│ │ ├── JpqlSerializerTest.kt
│ │ ├── StatementClause.kt
│ │ ├── StatementClauseArguments.kt
│ │ ├── StatementClauseArgumentsProvider.kt
│ │ └── StatementClauseSource.kt
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── render
│ │ ├── RenderContext.kt
│ │ ├── RenderContextImpl.kt
│ │ └── template
│ │ ├── Template.kt
│ │ └── TemplateElement.kt
│ ├── test
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── render
│ │ ├── CombinedRenderContextTest.kt
│ │ ├── EmptyRenderContextTest.kt
│ │ └── template
│ │ └── TemplateTest.kt
│ └── testFixtures
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── render
│ └── TestRenderContext.kt
├── renovate.json
├── settings.gradle.kts
├── src
├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ ├── Experimental.kt
│ │ ├── Internal.kt
│ │ ├── SinceJdsl.kt
│ │ ├── clazz
│ │ ├── ClassUtils.kt
│ │ └── SuperClassDepthComparator.kt
│ │ ├── iterable
│ │ └── IterableUtils.kt
│ │ └── property
│ │ └── PropertyUtils.kt
└── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ ├── clazz
│ ├── ClassUtilsTest.kt
│ └── SuperClassDepthComparatorTest.kt
│ ├── iterable
│ └── IterableUtilsTest.kt
│ └── property
│ └── PropertyUtilsTest.kt
└── support
├── build.gradle.kts
├── eclipselink-javax
├── build.gradle.kts
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── eclipselink
│ │ └── javax
│ │ ├── JpqlEntityManagerUtils.kt
│ │ ├── JpqlRendererHolder.kt
│ │ └── extension
│ │ └── EntityManagerExtensions.kt
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── eclipselink
│ └── javax
│ ├── JpqlEntityManagerUtilsTest.kt
│ └── extension
│ └── EntityManagerExtensionsTest.kt
├── eclipselink
├── build.gradle.kts
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── eclipselink
│ │ ├── JpqlEntityManagerUtils.kt
│ │ ├── JpqlRendererHolder.kt
│ │ └── extension
│ │ └── EntityManagerExtensions.kt
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── eclipselink
│ ├── JpqlEntityManagerUtilsTest.kt
│ └── extension
│ └── EntityManagerExtensionsTest.kt
├── hibernate-javax
├── build.gradle.kts
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── hibernate
│ │ ├── JpqlEntityManagerUtils.kt
│ │ ├── JpqlRendererHolder.kt
│ │ └── extension
│ │ └── EntityManagerExtensions.kt
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── hibernate
│ ├── JpqlEntityManagerUtilsTest.kt
│ └── extension
│ └── EntityManagerExtensionsTest.kt
├── hibernate-reactive-javax
├── build.gradle.kts
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── hibernate
│ │ └── reactive
│ │ ├── JpqlMutinySessionUtils.kt
│ │ ├── JpqlMutinyStatelessSessionUtils.kt
│ │ ├── JpqlRendererHolder.kt
│ │ ├── JpqlStageSessionUtils.kt
│ │ ├── JpqlStageStatelessSessionUtils.kt
│ │ └── extension
│ │ ├── MutinySessionExtensions.kt
│ │ ├── MutinyStatelessSessionExtensions.kt
│ │ ├── StageSessionExtensions.kt
│ │ └── StageStatelessSessionExtensions.kt
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── hibernate
│ └── reactive
│ ├── JpqlMutinySessionUtilsTest.kt
│ ├── JpqlMutinyStatelessSessionUtilsTest.kt
│ ├── JpqlStageSessionUtilsTest.kt
│ ├── JpqlStageStatelessSessionUtilsTest.kt
│ └── extension
│ ├── MutinySessionExtensionsTest.kt
│ ├── MutinyStatelessSessionExtensionsTest.kt
│ ├── StageSessionExtensionsTest.kt
│ └── StageStatelessSessionExtensionsTest.kt
├── hibernate-reactive
├── build.gradle.kts
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── hibernate
│ │ └── reactive
│ │ ├── JpqlMutinySessionUtils.kt
│ │ ├── JpqlMutinyStatelessSessionUtils.kt
│ │ ├── JpqlRendererHolder.kt
│ │ ├── JpqlStageSessionUtils.kt
│ │ ├── JpqlStageStatelessSessionUtils.kt
│ │ └── extension
│ │ ├── MutinySessionExtensions.kt
│ │ ├── MutinyStatelessSessionExtensions.kt
│ │ ├── StageSessionExtensions.kt
│ │ └── StageStatelessSessionExtensions.kt
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── hibernate
│ └── reactive
│ ├── JpqlMutinySessionUtilsTest.kt
│ ├── JpqlMutinyStatelessSessionUtilsTest.kt
│ ├── JpqlStageSessionUtilsTest.kt
│ ├── JpqlStageStatelessSessionUtilsTest.kt
│ └── extension
│ ├── MutinySessionExtensionsTest.kt
│ ├── MutinyStatelessSessionExtensionsTest.kt
│ ├── StageSessionExtensionsTest.kt
│ └── StageStatelessSessionExtensionsTest.kt
├── hibernate
├── build.gradle.kts
└── src
│ ├── main
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── hibernate
│ │ ├── JpqlEntityManagerUtils.kt
│ │ ├── JpqlRendererHolder.kt
│ │ └── extension
│ │ └── EntityManagerExtensions.kt
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── hibernate
│ ├── JpqlEntityManagerUtilsTest.kt
│ └── extension
│ └── EntityManagerExtensionsTest.kt
├── spring-batch-javax
├── build.gradle.kts
└── src
│ ├── main
│ ├── kotlin
│ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── support
│ │ │ └── spring
│ │ │ └── batch
│ │ │ └── javax
│ │ │ ├── JpqlEntityManagerUtils.kt
│ │ │ ├── JpqlRendererHolder.kt
│ │ │ ├── autoconfigure
│ │ │ └── KotlinJdslAutoConfiguration.kt
│ │ │ └── item
│ │ │ └── database
│ │ │ └── orm
│ │ │ ├── KotlinJdslQueryProvider.kt
│ │ │ └── KotlinJdslQueryProviderFactory.kt
│ └── resources
│ │ └── META-INF
│ │ ├── spring.factories
│ │ └── spring
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── test
│ └── kotlin
│ │ └── com
│ │ └── linecorp
│ │ └── kotlinjdsl
│ │ └── support
│ │ └── spring
│ │ └── batch
│ │ └── javax
│ │ ├── JpqlEntityManagerUtilsTest.kt
│ │ └── item
│ │ └── database
│ │ └── orm
│ │ ├── KotlinJdslQueryProviderFactoryTest.kt
│ │ └── KotlinJdslQueryProviderTest.kt
│ └── testFixtures
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── spring
│ └── batch
│ └── javax
│ └── entity
│ ├── author
│ └── Author.kt
│ ├── book
│ ├── Book.kt
│ ├── BookAuthor.kt
│ ├── BookAuthorType.kt
│ ├── BookPublisher.kt
│ └── Isbn.kt
│ ├── department
│ └── Department.kt
│ ├── employee
│ ├── Employee.kt
│ ├── EmployeeAddress.kt
│ ├── EmployeeDepartment.kt
│ ├── FullTimeEmployee.kt
│ └── PartTimeEmployee.kt
│ └── publisher
│ └── Publisher.kt
├── spring-batch
├── build.gradle.kts
└── src
│ ├── main
│ ├── kotlin
│ │ └── com
│ │ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── support
│ │ │ └── spring
│ │ │ └── batch
│ │ │ ├── JpqlEntityManagerUtils.kt
│ │ │ ├── JpqlRendererHolder.kt
│ │ │ ├── autoconfigure
│ │ │ └── KotlinJdslAutoConfiguration.kt
│ │ │ └── item
│ │ │ └── database
│ │ │ └── orm
│ │ │ ├── KotlinJdslQueryProvider.kt
│ │ │ └── KotlinJdslQueryProviderFactory.kt
│ └── resources
│ │ └── META-INF
│ │ ├── spring.factories
│ │ └── spring
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── spring
│ └── batch
│ ├── JpqlEntityManagerUtilsTest.kt
│ └── item
│ └── database
│ └── orm
│ ├── KotlinJdslQueryProviderFactoryTest.kt
│ └── KotlinJdslQueryProviderTest.kt
├── spring-data-jpa-javax
├── build.gradle.kts
└── src
│ ├── main
│ ├── kotlin
│ │ ├── com
│ │ │ └── linecorp
│ │ │ │ └── kotlinjdsl
│ │ │ │ └── support
│ │ │ │ └── spring
│ │ │ │ └── data
│ │ │ │ └── jpa
│ │ │ │ └── javax
│ │ │ │ ├── EnhancedTypedQuery.kt
│ │ │ │ ├── JpqlEntityManagerUtils.kt
│ │ │ │ ├── JpqlRendererHolder.kt
│ │ │ │ ├── autoconfigure
│ │ │ │ ├── KotlinJdslAutoConfiguration.kt
│ │ │ │ └── KotlinJdslJpaRepositoryFactoryBeanPostProcessor.kt
│ │ │ │ ├── extension
│ │ │ │ └── EntityManagerExtensions.kt
│ │ │ │ └── repository
│ │ │ │ ├── KotlinJdslJpqlExecutor.kt
│ │ │ │ └── KotlinJdslJpqlExecutorImpl.kt
│ │ └── org
│ │ │ └── springframework
│ │ │ └── data
│ │ │ ├── jpa
│ │ │ └── repository
│ │ │ │ ├── query
│ │ │ │ └── QueryEnhancerFactoryAdaptor.kt
│ │ │ │ └── support
│ │ │ │ └── CrudMethodMetadataPostProcessorAdaptor.kt
│ │ │ └── support
│ │ │ └── PageableExecutionUtilsAdaptor.kt
│ └── resources
│ │ └── META-INF
│ │ ├── spring.factories
│ │ └── spring
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test
│ └── kotlin
│ └── com
│ └── linecorp
│ └── kotlinjdsl
│ └── support
│ └── spring
│ └── data
│ └── jpa
│ └── javax
│ ├── JpqlEntityManagerUtilsTest.kt
│ ├── extension
│ └── EntityManagerExtensionsTest.kt
│ └── repository
│ └── KotlinJdslJpqlExecutorImplTest.kt
└── spring-data-jpa
├── build.gradle.kts
└── src
├── main
├── kotlin
│ ├── com
│ │ └── linecorp
│ │ │ └── kotlinjdsl
│ │ │ └── support
│ │ │ └── spring
│ │ │ └── data
│ │ │ └── jpa
│ │ │ ├── EnhancedTypedQuery.kt
│ │ │ ├── JpqlEntityManagerUtils.kt
│ │ │ ├── JpqlRendererHolder.kt
│ │ │ ├── autoconfigure
│ │ │ ├── KotlinJdslAutoConfiguration.kt
│ │ │ └── KotlinJdslJpaRepositoryFactoryBeanPostProcessor.kt
│ │ │ ├── extension
│ │ │ └── EntityManagerExtensions.kt
│ │ │ └── repository
│ │ │ ├── KotlinJdslJpqlExecutor.kt
│ │ │ └── KotlinJdslJpqlExecutorImpl.kt
│ └── org
│ │ └── springframework
│ │ └── data
│ │ ├── jpa
│ │ └── repository
│ │ │ ├── query
│ │ │ └── QueryEnhancerFactoryAdaptor.kt
│ │ │ └── support
│ │ │ └── CrudMethodMetadataPostProcessorAdaptor.kt
│ │ └── support
│ │ └── PageableExecutionUtilsAdaptor.kt
└── resources
│ └── META-INF
│ ├── spring.factories
│ └── spring
│ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
└── test
└── kotlin
└── com
└── linecorp
└── kotlinjdsl
└── support
└── spring
└── data
└── jpa
├── JpqlEntityManagerUtilsTest.kt
├── extension
└── EntityManagerExtensionsTest.kt
└── repository
└── KotlinJdslJpqlExecutorImplTest.kt
/.codecov.yml:
--------------------------------------------------------------------------------
1 | #file: noinspection YAMLSchemaValidation
2 | coverage:
3 | status:
4 | project:
5 | default:
6 | threshold: 0.25
7 |
8 | comment:
9 | require_changes: true
10 |
11 | ignore:
12 | - benchmark/**/*
13 | - example/**/*
14 |
--------------------------------------------------------------------------------
/.githook/pre-commit-default.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Running git pre-commit hook"
4 |
5 | ./gradlew lintKotlin
6 |
7 | status=$?
8 |
9 | if [ $status -ne 0 ]; then
10 | echo "#######################################################"
11 | echo "#Lint failed, commit aborted. Please run formatKotlin.#"
12 | echo "#######################################################"
13 | exit 1
14 | fi
15 |
16 | exit 0
17 |
--------------------------------------------------------------------------------
/.githook/pre-commit-macos.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Running git pre-commit hook"
4 |
5 | ./gradlew lintKotlin
6 |
7 | status=$?
8 |
9 | if [ $status -ne 0 ]; then
10 | echo "#######################################################"
11 | echo "#Lint failed, commit aborted. Please run formatKotlin.#"
12 | echo "#######################################################"
13 | exit 1
14 | fi
15 |
16 | exit 0
17 |
--------------------------------------------------------------------------------
/.githook/pre-commit-windows.sh:
--------------------------------------------------------------------------------
1 | #!C:/Program\ Files/Git/usr/bin/sh.exe
2 |
3 | echo "Running git pre-commit hook"
4 |
5 | ./gradlew lintKotlin
6 |
7 | status=$?
8 |
9 | if [ $status -ne 0 ]; then
10 | echo "#######################################################"
11 | echo "#Lint failed, commit aborted. Please run formatKotlin.#"
12 | echo "#######################################################"
13 | exit 1
14 | fi
15 |
16 | exit 0
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | .gradle
3 | build/
4 | !gradle/wrapper/gradle-wrapper.jar
5 | !**/src/main/**/build/
6 | !**/src/test/**/build/
7 |
8 | ### STS ###
9 | .apt_generated
10 | .classpath
11 | .factorypath
12 | .project
13 | .settings
14 | .springBeans
15 | .sts4-cache
16 | bin/
17 | !**/src/main/**/bin/
18 | !**/src/test/**/bin/
19 |
20 | ### IntelliJ IDEA ###
21 | .idea
22 | *.iws
23 | *.iml
24 | *.ipr
25 | out/
26 | !**/src/main/**/out/
27 | !**/src/test/**/out/
28 |
29 | ### NetBeans ###
30 | /nbproject/private/
31 | /nbbuild/
32 | /dist/
33 | /nbdist/
34 | /.nb-gradle/
35 |
36 | ### VS Code ###
37 | .vscode/
38 |
39 | ### NPM ###
40 | package-lock.json
41 | /node_modules/
42 |
43 | ### OS generated files ###
44 | .DS_Store
45 |
--------------------------------------------------------------------------------
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # This is a comment.
2 | # Each line is a file pattern followed by one or more owners.
3 |
4 | # These owners will be the default owners for everything in
5 | # the repo. Unless a later match takes precedence,
6 | # @global-owner1 and @global-owner2 will be requested for
7 | # review when someone opens a pull request.
8 | * @pickmoment @huisam @cj848 @shouwn
9 |
--------------------------------------------------------------------------------
/benchmark/src/main/kotlin/com/linecorp/kotlinjdsl/benchmark/sample/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.benchmark.sample.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/benchmark/src/main/kotlin/com/linecorp/kotlinjdsl/benchmark/sample/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.benchmark.sample.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.math.BigDecimal
6 |
7 | @Embeddable
8 | data class BookPrice(
9 | @Column(name = "price", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun BookPrice(int: Int): BookPrice {
14 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun BookPrice(double: Double): BookPrice {
18 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/benchmark/src/main/kotlin/com/linecorp/kotlinjdsl/benchmark/sample/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.benchmark.sample.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.io.Serializable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/benchmark/src/main/kotlin/com/linecorp/kotlinjdsl/benchmark/sample/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.benchmark.sample.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/benchmark/src/main/kotlin/com/linecorp/kotlinjdsl/benchmark/sample/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.benchmark.sample.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.math.BigDecimal
6 |
7 | @Embeddable
8 | data class EmployeeSalary(
9 | @Column(name = "salary", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun EmployeeSalary(int: Int): EmployeeSalary {
14 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun EmployeeSalary(double: Double): EmployeeSalary {
18 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/benchmark/src/main/kotlin/com/linecorp/kotlinjdsl/benchmark/sample/query/select/SelectQuery4.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.benchmark.sample.query.select
2 |
3 | import com.linecorp.kotlinjdsl.benchmark.sample.entity.book.Book
4 | import com.linecorp.kotlinjdsl.dsl.jpql.jpql
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.select.SelectQuery
6 |
7 | object SelectQuery4 : () -> SelectQuery<*> {
8 | override fun invoke(): SelectQuery<*> {
9 | return jpql {
10 | select(
11 | customExpression(String::class, "CAST({0} AS VARCHAR)", path(Book::price)),
12 | ).from(
13 | entity(Book::class),
14 | )
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/benchmark/src/main/resources/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/en/jpql-with-kotlin-jdsl/migration-2.x-to-3.x.md:
--------------------------------------------------------------------------------
1 | # Migration 2.X to 3.X
2 |
3 | Kotlin JDSL 2.X and 3.X can be used together in a single application because there is no package name crash.
4 | So, you can write new queries in Kotlin JDSL 3.X and gradually move queries written in Kotlin JDSL 2.X to Kotlin JDSL 3.X.
5 |
--------------------------------------------------------------------------------
/docs/en/jpql-with-kotlin-jdsl/sorts.md:
--------------------------------------------------------------------------------
1 | # Sorts
2 |
3 | Kotlin JDSL has `Sort` interface to represent an order-by item in JPQL.
4 | To build `Sort`, you can use `asc()` and `desc()` after [`Expression`](expressions.md).
5 |
6 | ```kotlin
7 | path(Book::isbn).asc()
8 |
9 | path(Book::isbn).desc()
10 | ```
11 |
12 | ## Null order
13 |
14 | Calling `nullsFirst()` or `nullsLast()` on `Sort` allows to specify where null values appear in an ordered result.
15 |
16 | ```kotlin
17 | path(Employee::nickname).asc().nullsFirst()
18 |
19 | path(Employee::nickname).asc().nullsLast()
20 | ```
21 |
--------------------------------------------------------------------------------
/docs/en/kotlin-jdsl-roadmap.md:
--------------------------------------------------------------------------------
1 | # Kotlin JDSL Roadmap
2 |
3 | ## DSL
4 |
5 | ### MySQL
6 |
7 | Kotlin JDSL provides a MySQL-specific DSL that makes it easy to build MySQL queries.
8 |
9 | ### Oracle
10 |
11 | Kotlin JDSL provides an Oracle-specific DSL that makes it easy to build Oracle queries.
12 |
13 | ### OpenSearch
14 |
15 | Kotlin JDSL provides an OpenSearch-specific DSL that makes it easy to build OpenSearch queries.
16 |
17 | ## Support
18 |
19 | ### Jasync
20 |
21 | Kotlin JDSL supports [jasync](https://github.com/jasync-sql/jasync-sql) to execute native queries for coroutine.
22 |
--------------------------------------------------------------------------------
/docs/ko/jpql-with-kotlin-jdsl.md:
--------------------------------------------------------------------------------
1 | # JPQL with Kotlin JDSL
2 |
3 |
--------------------------------------------------------------------------------
/docs/ko/jpql-with-kotlin-jdsl/migration-2.x-to-3.x.md:
--------------------------------------------------------------------------------
1 | # Migration 2.X to 3.X
2 |
3 | Kotlin JDSL 2.X와 3.X는 둘 사이에 패키지 충돌이 없기 때문에 하나의 어플리케이션에서 같이 사용할 수 있습니다.
4 | 그래서 신규로 작성하는 쿼리는 Kotlin JDSL 3.X로 작성하고 점진적으로 Kotlin JDSL 2.X로 작성된 쿼리를 Kotlin JDSL 3.X로 옮겨가면 됩니다.
5 |
--------------------------------------------------------------------------------
/docs/ko/jpql-with-kotlin-jdsl/sorts.md:
--------------------------------------------------------------------------------
1 | # Sorts
2 |
3 | Kotlin JDSL은 JPQL의 order-by item을 표현하기 위해 `Sort` 인터페이스를 가지고 있습니다.
4 | `Sort`를 만들기 위해, `asc()`와 `desc()`를 [`Expression`](expressions.md) 뒤에 붙여 사용할 수 있습니다.
5 |
6 | ```kotlin
7 | path(Book::isbn).asc()
8 |
9 | path(Book::isbn).desc()
10 | ```
11 |
12 | ## Null order
13 |
14 | `Sort`의 `nullsFirst()`와 `nullsLast()`를 호출하는 것으로 null이 조회 결과의 어디에 나타나야 하는지 표현할 수 있습니다.
15 |
16 | ```kotlin
17 | path(Employee::nickname).asc().nullsFirst()
18 |
19 | path(Employee::nickname).asc().nullsLast()
20 | ```
21 |
--------------------------------------------------------------------------------
/docs/ko/kotlin-jdsl-roadmap.md:
--------------------------------------------------------------------------------
1 | # Kotlin JDSL Roadmap
2 |
3 | ## DSL
4 |
5 | ### MySQL
6 |
7 | Kotlin JDSL은 MySQL 기반의 DSL을 제공하여 MySQL 쿼리를 쉽게 작성할 수 있도록 도와줍니다.
8 |
9 | ### Oracle
10 |
11 | Kotlin JDSL은 Oracle 기반의 DSL을 제공하여 Oracle 쿼리를 쉽게 작성할 수 있도록 도와줍니다.
12 |
13 | ### OpenSearch
14 |
15 | Kotlin JDSL은 OpenSearch 기반의 DSL을 제공하여 OpenSearch 쿼리를 쉽게 작성할 수 있도록 도와줍니다.
16 |
17 | ## Support
18 |
19 | ### Jasync
20 |
21 | Kotlin JDSL은 coroutine 기반의 native 쿼리를 실행하기 위해 [jasync](https://github.com/jasync-sql/jasync-sql)을 지원합니다.
22 |
--------------------------------------------------------------------------------
/dsl/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | }
3 |
4 | dependencies {
5 | api(projects.queryModel)
6 | }
7 |
--------------------------------------------------------------------------------
/dsl/jpql/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | }
3 |
4 | dependencies {
5 | api(projects.dsl)
6 | api(projects.jpqlQueryModel)
7 | }
8 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/JpqlDsl.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.dsl.jpql.JpqlDsl.Constructor
5 |
6 | /**
7 | * Marker interface to represent the DSL for JPQL.
8 | *
9 | * The class that implements this interface must have the companion object that implements [Constructor].
10 | */
11 | @SinceJdsl("3.0.0")
12 | interface JpqlDsl {
13 | /**
14 | * Constructor to help avoid initializing DSL.
15 | *
16 | * @see jpql
17 | */
18 | @SinceJdsl("3.0.0")
19 | interface Constructor {
20 | fun newInstance(): T
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseElseStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseElseStep : Expressionable {
8 | /**
9 | * Creates an else operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun `else`(value: S): Expressionable
13 |
14 | /**
15 | * Creates an else operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun `else`(value: Expressionable): Expressionable
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseThenFirstStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseThenFirstStep {
8 | /**
9 | * Creates a then operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun then(value: T): CaseWhenStep
13 |
14 | /**
15 | * Creates a then operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun then(value: Expressionable): CaseWhenStep
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseThenStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseThenStep {
8 | /**
9 | * Creates a then operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun then(value: S): CaseWhenStep
13 |
14 | /**
15 | * Creates a then operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun then(value: Expressionable): CaseWhenStep
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseValueElseStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseValueElseStep : Expressionable {
8 | /**
9 | * Creates an else operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun `else`(value: S): Expressionable
13 |
14 | /**
15 | * Creates an else operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun `else`(value: Expressionable): Expressionable
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseValueThenFirstStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseValueThenFirstStep {
8 | /**
9 | * Creates a then operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun then(value: V): CaseValueWhenStep
13 |
14 | /**
15 | * Creates a then operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun then(value: Expressionable): CaseValueWhenStep
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseValueThenStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseValueThenStep {
8 | /**
9 | * Creates a then operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun then(value: S): CaseValueWhenStep
13 |
14 | /**
15 | * Creates a then operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun then(value: Expressionable): CaseValueWhenStep
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseValueWhenFirstStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface CaseValueWhenFirstStep {
8 | /**
9 | * Creates a when operator in a case expression.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun `when`(compareValue: S): CaseValueThenFirstStep
13 |
14 | /**
15 | * Creates a when operator in a case expression.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun `when`(compareValue: Expressionable): CaseValueThenFirstStep
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/CaseWhenStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.predicate.Predicatable
6 |
7 | @SinceJdsl("3.0.0")
8 | interface CaseWhenStep : CaseElseStep, Expressionable {
9 | /**
10 | * Creates a when operator in a case expression.
11 | */
12 | @SinceJdsl("3.0.0")
13 | fun `when`(predicate: Predicatable): CaseThenStep
14 | }
15 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/TrimFromStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 |
6 | @SinceJdsl("3.1.0")
7 | interface TrimFromStep {
8 | /**
9 | * Creates a from in a trim expression.
10 | */
11 | @SinceJdsl("3.1.0")
12 | fun from(value: String): Expressionable
13 |
14 | /**
15 | * Creates a from in a trim expression.
16 | */
17 | @SinceJdsl("3.1.0")
18 | fun from(value: Expressionable): Expressionable
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/impl/TrimBothDsl.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressions
6 |
7 | @PublishedApi
8 | internal data class TrimBothDsl(
9 | private val character: Expression?,
10 | private val value: Expression,
11 | ) : Expressionable {
12 | override fun toExpression(): Expression {
13 | return Expressions.trimBoth(
14 | character = character,
15 | value = value,
16 | )
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/expression/impl/TrimDsl.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressions
6 |
7 | @PublishedApi
8 | internal data class TrimDsl(
9 | private val character: Expression?,
10 | private val value: Expression,
11 | ) : Expressionable {
12 | override fun toExpression(): Expression {
13 | return Expressions.trim(
14 | character = character,
15 | value = value,
16 | )
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/join/AssociationJoinAsStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.join
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.entity.Entityable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.join.Joinable
6 |
7 | @SinceJdsl("3.0.0")
8 | interface AssociationJoinAsStep : Joinable {
9 | /**
10 | * Creates an aliased join.
11 | */
12 | @SinceJdsl("3.0.0")
13 | fun `as`(entity: Entityable): Joinable
14 |
15 | /**
16 | * Creates an aliased join.
17 | */
18 | @SinceJdsl("3.0.0")
19 | fun alias(entity: Entityable): Joinable
20 | }
21 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/join/AssociationJoinOnStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.join
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.join.Joinable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.predicate.Predicatable
6 |
7 | @SinceJdsl("3.0.0")
8 | interface AssociationJoinOnStep : AssociationJoinAsStep, Joinable {
9 | /**
10 | * Creates an on operator in a join clause.
11 | */
12 | @SinceJdsl("3.0.0")
13 | fun on(predicate: Predicatable): AssociationJoinAsStep
14 | }
15 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/join/JoinAsStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.join
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.entity.Entityable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.join.Joinable
6 |
7 | @SinceJdsl("3.0.0")
8 | interface JoinAsStep : Joinable {
9 | /**
10 | * Creates an aliased join.
11 | */
12 | @SinceJdsl("3.0.0")
13 | fun `as`(entity: Entityable): Joinable
14 |
15 | /**
16 | * Creates an aliased join.
17 | */
18 | @SinceJdsl("3.0.0")
19 | fun alias(entity: Entityable): Joinable
20 | }
21 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/join/JoinOnStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.join
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.predicate.Predicatable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface JoinOnStep {
8 | /**
9 | * Creates an on operator in a join clause.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun on(predicate: Predicatable): JoinAsStep
13 | }
14 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/select/SelectQueryGroupByStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.select
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.JpqlQueryable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
6 | import com.linecorp.kotlinjdsl.querymodel.jpql.select.SelectQuery
7 |
8 | @SinceJdsl("3.0.0")
9 | interface SelectQueryGroupByStep : SelectQueryHavingStep, JpqlQueryable> {
10 | /**
11 | * Creates a group by clause in a select query.
12 | */
13 | @SinceJdsl("3.0.0")
14 | fun groupBy(vararg expr: Expressionable<*>?): SelectQueryHavingStep
15 | }
16 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/select/SelectQueryOrderByStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.select
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.JpqlQueryable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.select.SelectQuery
6 | import com.linecorp.kotlinjdsl.querymodel.jpql.sort.Sortable
7 |
8 | @SinceJdsl("3.0.0")
9 | interface SelectQueryOrderByStep : JpqlQueryable> {
10 | /**
11 | * Creates an order by clause in a select query.
12 | */
13 | @SinceJdsl("3.0.0")
14 | fun orderBy(vararg sorts: Sortable?): JpqlQueryable>
15 | }
16 |
--------------------------------------------------------------------------------
/dsl/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/sort/SortNullsStep.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.sort
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.sort.Sortable
5 |
6 | @SinceJdsl("3.0.0")
7 | interface SortNullsStep : Sortable {
8 | /**
9 | * Creates a null order in a sort.
10 | */
11 | @SinceJdsl("3.0.0")
12 | fun nullsFirst(): Sortable
13 |
14 | /**
15 | * Creates a null order in a sort.
16 | */
17 | @SinceJdsl("3.0.0")
18 | fun nullsLast(): Sortable
19 | }
20 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/QueryPartExtensions.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql
2 |
3 | inline fun queryPart(init: Jpql.() -> T): T {
4 | return Jpql().init()
5 | }
6 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/author/Author.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.author
2 |
3 | class Author(
4 | val authorId: Long,
5 | val name: String,
6 | )
7 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/book/Book.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.book
2 |
3 | import java.math.BigDecimal
4 | import java.time.OffsetDateTime
5 |
6 | class Book(
7 | val isbn: Isbn,
8 | val title: String,
9 | val imageUrl: String,
10 | val price: BigDecimal,
11 | val salePrice: BigDecimal,
12 | val publishDate: OffsetDateTime,
13 | val authors: MutableSet,
14 | val publisher: BookPublisher,
15 | )
16 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/book/BookAuthor.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.book
2 |
3 | class BookAuthor(
4 | val book: Book,
5 | val authorId: Long,
6 | val authorType: BookAuthorType,
7 | )
8 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/book/BookAuthorType.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.book
2 |
3 | enum class BookAuthorType {
4 | AUTHOR,
5 | TRANSLATOR,
6 | EDITOR,
7 | }
8 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/book/BookPublisher.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.book
2 |
3 | class BookPublisher(
4 | val publisherId: Long,
5 | val book: Book,
6 | )
7 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.book
2 |
3 | import java.io.Serializable
4 |
5 | /**
6 | * International Standard Book Number
7 | */
8 | data class Isbn(
9 | val value: String,
10 | ) : Serializable
11 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/department/Department.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.department
2 |
3 | class Department(
4 | val departmentId: Long,
5 | val name: String,
6 | )
7 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/employee/Employee.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.employee
2 |
3 | abstract class Employee(
4 | val employeeId: Long,
5 | val name: String,
6 | val nickname: String?,
7 | val age: Int,
8 | val phone: String,
9 | val address: EmployeeAddress,
10 | val departments: MutableSet,
11 | ) {
12 | fun getDisplayName() = nickname ?: name
13 | }
14 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.employee
2 |
3 | data class EmployeeAddress(
4 | val zipCode: String,
5 | val streetAddress1: String,
6 | val streetAddress2: String?,
7 | val city: String,
8 | val province: String,
9 | )
10 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/employee/EmployeeDepartment.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.employee
2 |
3 | class EmployeeDepartment(
4 | val employee: Employee,
5 | val departmentId: Long,
6 | )
7 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/employee/PartTimeEmployee.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.employee
2 |
3 | import java.math.BigDecimal
4 |
5 | class PartTimeEmployee(
6 | employeeId: Long,
7 | name: String,
8 | nickname: String?,
9 | age: Int,
10 | phone: String,
11 | address: EmployeeAddress,
12 | departments: MutableSet,
13 | val weeklySalary: BigDecimal,
14 | ) : Employee(
15 | employeeId = employeeId,
16 | name = name,
17 | nickname = nickname,
18 | age = age,
19 | phone = phone,
20 | address = address,
21 | departments = departments,
22 | )
23 |
--------------------------------------------------------------------------------
/dsl/jpql/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/dsl/jpql/entity/publisher/Publisher.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.dsl.jpql.entity.publisher
2 |
3 | class Publisher(
4 | val publisherId: Long,
5 | val name: String,
6 | )
7 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | ## Example
2 |
3 | You can see how you can build and execute a query with Kotlin JDSL using the library you are using through the
4 | submodules.
5 |
6 | ### Data
7 |
8 | The submodules all use the same schema and data, which can be seen in the [data.sql](./src/main/resources/data.sql)
9 | and [schema.sql](./src/main/resources/schema.sql) in the [resources](./src/main/resources). Both files are written for
10 | the MySQL.
11 |
--------------------------------------------------------------------------------
/example/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | }
3 |
4 | dependencies {
5 | }
6 |
7 | tasks.withType().configureEach { enabled = false }
8 | tasks.withType().configureEach { enabled = false }
9 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.entity.book
4 |
5 | import java.math.BigDecimal
6 | import javax.persistence.Column
7 | import javax.persistence.Embeddable
8 |
9 | @Embeddable
10 | data class BookPrice(
11 | @Column(name = "price", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun BookPrice(int: Int): BookPrice {
16 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun BookPrice(double: Double): BookPrice {
20 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.entity.book
2 |
3 | import java.io.Serializable
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.entity.employee
2 |
3 | import javax.persistence.Column
4 | import javax.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.entity.employee
4 |
5 | import java.math.BigDecimal
6 | import javax.persistence.Column
7 | import javax.persistence.Embeddable
8 |
9 | @Embeddable
10 | data class EmployeeSalary(
11 | @Column(name = "salary", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun EmployeeSalary(int: Int): EmployeeSalary {
16 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun EmployeeSalary(double: Double): EmployeeSalary {
20 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/jpql/JpqlRenderContextUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.jpql
2 |
3 | import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext
4 |
5 | object JpqlRenderContextUtils {
6 | fun getJpqlRenderContext(): JpqlRenderContext {
7 | return jpqlRenderContext
8 | }
9 | }
10 |
11 | private val jpqlRenderContext = JpqlRenderContext()
12 |
--------------------------------------------------------------------------------
/example/eclipselink-javax/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/javax/reader/MultipleLinesSqlCommandFileReader.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.javax.reader
2 |
3 | import java.io.FileReader
4 |
5 | internal class MultipleLinesSqlCommandFileReader(
6 | fileName: String,
7 | ) : FileReader(fileName) {
8 | override fun read(): Int {
9 | val data = super.read()
10 |
11 | return if (data == -1) {
12 | -1
13 | } else {
14 | when (val aChar = data.toChar()) {
15 | ';' -> '\n'
16 | '\n' -> ' '
17 | else -> aChar
18 | }.code
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/example/eclipselink/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/eclipselink/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.eclipselink.entity.book
4 |
5 | import jakarta.persistence.Column
6 | import jakarta.persistence.Embeddable
7 | import java.math.BigDecimal
8 |
9 | @Embeddable
10 | data class BookPrice(
11 | @Column(name = "price", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun BookPrice(int: Int): BookPrice {
16 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun BookPrice(double: Double): BookPrice {
20 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/eclipselink/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.io.Serializable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/eclipselink/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/eclipselink/src/main/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.eclipselink.entity.employee
4 |
5 | import jakarta.persistence.Column
6 | import jakarta.persistence.Embeddable
7 | import java.math.BigDecimal
8 |
9 | @Embeddable
10 | data class EmployeeSalary(
11 | @Column(name = "salary", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun EmployeeSalary(int: Int): EmployeeSalary {
16 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun EmployeeSalary(double: Double): EmployeeSalary {
20 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/eclipselink/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/jpql/JpqlRenderContextUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.jpql
2 |
3 | import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext
4 |
5 | object JpqlRenderContextUtils {
6 | fun getJpqlRenderContext(): JpqlRenderContext {
7 | return jpqlRenderContext
8 | }
9 | }
10 |
11 | private val jpqlRenderContext = JpqlRenderContext()
12 |
--------------------------------------------------------------------------------
/example/eclipselink/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/eclipselink/reader/MultipleLinesSqlCommandFileReader.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.eclipselink.reader
2 |
3 | import java.io.FileReader
4 |
5 | internal class MultipleLinesSqlCommandFileReader(
6 | fileName: String,
7 | ) : FileReader(fileName) {
8 | override fun read(): Int {
9 | val data = super.read()
10 |
11 | return if (data == -1) {
12 | -1
13 | } else {
14 | when (val aChar = data.toChar()) {
15 | ';' -> '\n'
16 | '\n' -> ' '
17 | else -> aChar
18 | }.code
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/javax/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.javax.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/javax/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.javax.entity.book
2 |
3 | import java.math.BigDecimal
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | @Embeddable
8 | data class BookPrice(
9 | @Column(name = "price", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun BookPrice(int: Int): BookPrice {
14 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun BookPrice(double: Double): BookPrice {
18 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/javax/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.javax.entity.book
2 |
3 | import java.io.Serializable
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/javax/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.javax.entity.employee
2 |
3 | import javax.persistence.Column
4 | import javax.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/javax/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.javax.entity.employee
2 |
3 | import java.math.BigDecimal
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | @Embeddable
8 | data class EmployeeSalary(
9 | @Column(name = "salary", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun EmployeeSalary(int: Int): EmployeeSalary {
14 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun EmployeeSalary(double: Double): EmployeeSalary {
18 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/EntityManagerFactoryTestUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate
2 |
3 | import javax.persistence.EntityManagerFactory
4 | import javax.persistence.Persistence
5 |
6 | object EntityManagerFactoryTestUtils {
7 | fun getEntityManagerFactory(): EntityManagerFactory {
8 | return entityManagerFactory
9 | }
10 | }
11 |
12 | private val entityManagerFactory = Persistence.createEntityManagerFactory("example").also {
13 | val thread = Thread {
14 | if (it.isOpen) it.close()
15 |
16 | println("EntityManagerFactory is closed")
17 | }
18 |
19 | Runtime.getRuntime().addShutdownHook(thread)
20 | }
21 |
--------------------------------------------------------------------------------
/example/hibernate-javax/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/jpql/JpqlRenderContextUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.jpql
2 |
3 | import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext
4 |
5 | object JpqlRenderContextUtils {
6 | fun getJpqlRenderContext(): JpqlRenderContext {
7 | return jpqlRenderContext
8 | }
9 | }
10 |
11 | private val jpqlRenderContext = JpqlRenderContext()
12 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/javax/jpql/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.javax.jpql.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/javax/jpql/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.javax.jpql.entity.book
2 |
3 | import java.math.BigDecimal
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | @Embeddable
8 | data class BookPrice(
9 | @Column(name = "price", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun BookPrice(int: Int): BookPrice {
14 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun BookPrice(double: Double): BookPrice {
18 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/javax/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.javax.jpql.entity.book
2 |
3 | import java.io.Serializable
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/javax/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.javax.jpql.entity.employee
2 |
3 | import javax.persistence.Column
4 | import javax.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/javax/jpql/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.javax.jpql.entity.employee
2 |
3 | import java.math.BigDecimal
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | @Embeddable
8 | data class EmployeeSalary(
9 | @Column(name = "salary", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun EmployeeSalary(int: Int): EmployeeSalary {
14 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun EmployeeSalary(double: Double): EmployeeSalary {
18 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/main/resources/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/hibernate-reactive-javax/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jpql/JpqlRenderContextUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jpql
2 |
3 | import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext
4 |
5 | object JpqlRenderContextUtils {
6 | fun getJpqlRenderContext(): JpqlRenderContext {
7 | return jpqlRenderContext
8 | }
9 | }
10 |
11 | private val jpqlRenderContext = JpqlRenderContext()
12 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jakarta/jpql/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jakarta.jpql.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jakarta/jpql/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jakarta.jpql.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.math.BigDecimal
6 |
7 | @Embeddable
8 | data class BookPrice(
9 | @Column(name = "price", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun BookPrice(int: Int): BookPrice {
14 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun BookPrice(double: Double): BookPrice {
18 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jakarta/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jakarta.jpql.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.io.Serializable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jakarta/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jakarta.jpql.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/main/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jakarta/jpql/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jakarta.jpql.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.math.BigDecimal
6 |
7 | @Embeddable
8 | data class EmployeeSalary(
9 | @Column(name = "salary", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun EmployeeSalary(int: Int): EmployeeSalary {
14 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun EmployeeSalary(double: Double): EmployeeSalary {
18 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/main/resources/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/hibernate-reactive/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/hibernate/reactive/jpql/JpqlRenderContextUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.hibernate.reactive.jpql
2 |
3 | import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext
4 |
5 | object JpqlRenderContextUtils {
6 | fun getJpqlRenderContext(): JpqlRenderContext {
7 | return jpqlRenderContext
8 | }
9 | }
10 |
11 | private val jpqlRenderContext = JpqlRenderContext()
12 |
--------------------------------------------------------------------------------
/example/hibernate/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/hibernate/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.math.BigDecimal
6 |
7 | @Embeddable
8 | data class BookPrice(
9 | @Column(name = "price", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun BookPrice(int: Int): BookPrice {
14 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun BookPrice(double: Double): BookPrice {
18 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.io.Serializable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/hibernate/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/hibernate/src/main/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.math.BigDecimal
6 |
7 | @Embeddable
8 | data class EmployeeSalary(
9 | @Column(name = "salary", scale = 2)
10 | val value: BigDecimal,
11 | )
12 |
13 | fun EmployeeSalary(int: Int): EmployeeSalary {
14 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
15 | }
16 |
17 | fun EmployeeSalary(double: Double): EmployeeSalary {
18 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
19 | }
20 |
--------------------------------------------------------------------------------
/example/hibernate/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/EntityManagerFactoryTestUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate
2 |
3 | import jakarta.persistence.EntityManagerFactory
4 | import jakarta.persistence.Persistence
5 |
6 | object EntityManagerFactoryTestUtils {
7 | fun getEntityManagerFactory(): EntityManagerFactory {
8 | return entityManagerFactory
9 | }
10 | }
11 |
12 | private val entityManagerFactory = Persistence.createEntityManagerFactory("example").also {
13 | val thread = Thread {
14 | if (it.isOpen) it.close()
15 |
16 | println("EntityManagerFactory is closed")
17 | }
18 |
19 | Runtime.getRuntime().addShutdownHook(thread)
20 | }
21 |
--------------------------------------------------------------------------------
/example/hibernate/src/testFixtures/kotlin/com/linecorp/kotlinjdsl/example/jpql/hibernate/jpql/JpqlRenderContextUtils.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.jpql.hibernate.jpql
2 |
3 | import com.linecorp.kotlinjdsl.render.jpql.JpqlRenderContext
4 |
5 | object JpqlRenderContextUtils {
6 | fun getJpqlRenderContext(): JpqlRenderContext {
7 | return jpqlRenderContext
8 | }
9 | }
10 |
11 | private val jpqlRenderContext = JpqlRenderContext()
12 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/Application.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication
4 | import org.springframework.boot.runApplication
5 |
6 | @SpringBootApplication
7 | class Application
8 |
9 | fun main(args: Array) {
10 | runApplication(*args)
11 | }
12 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.book
4 |
5 | import java.math.BigDecimal
6 | import javax.persistence.Column
7 | import javax.persistence.Embeddable
8 |
9 | @Embeddable
10 | data class BookPrice(
11 | @Column(name = "price", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun BookPrice(int: Int): BookPrice {
16 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun BookPrice(double: Double): BookPrice {
20 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.book
2 |
3 | import java.io.Serializable
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.employee
2 |
3 | import javax.persistence.Column
4 | import javax.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/repository/author/AuthorRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.repository.author
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.author.Author
4 | import org.springframework.data.jpa.repository.JpaRepository
5 |
6 | interface AuthorRepository : JpaRepository
7 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/repository/book/BookRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.repository.book
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.book.Book
4 | import com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.book.Isbn
5 | import org.springframework.data.jpa.repository.JpaRepository
6 |
7 | interface BookRepository : JpaRepository
8 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/repository/department/DepartmentRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.repository.department
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.department.Department
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface DepartmentRepository : JpaRepository
9 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/repository/employee/EmployeeRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.repository.employee
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.employee.Employee
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface EmployeeRepository : JpaRepository
9 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/javax/jpql/repository/publisher/PublisherRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.repository.publisher
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.batch.javax.jpql.entity.publisher.Publisher
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface PublisherRepository : JpaRepository
9 |
--------------------------------------------------------------------------------
/example/spring-batch-javax/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring.batch:
2 | job:
3 | enabled: false
4 |
5 | spring.jpa:
6 | database-platform: org.hibernate.dialect.MySQL8Dialect
7 | hibernate.ddl-auto: none
8 |
9 | spring.datasource:
10 | url: jdbc:h2:mem:testdb;MODE=MySQL
11 |
12 | decorator:
13 | datasource:
14 | p6spy.enable-logging: true
15 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/Application.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication
4 | import org.springframework.boot.runApplication
5 |
6 | @SpringBootApplication
7 | class Application
8 |
9 | fun main(args: Array) {
10 | runApplication(*args)
11 | }
12 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.book
4 |
5 | import jakarta.persistence.Column
6 | import jakarta.persistence.Embeddable
7 | import java.math.BigDecimal
8 |
9 | @Embeddable
10 | data class BookPrice(
11 | @Column(name = "price", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun BookPrice(int: Int): BookPrice {
16 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun BookPrice(double: Double): BookPrice {
20 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.io.Serializable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/entity/employee/EmployeeSalary.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.employee
4 |
5 | import jakarta.persistence.Column
6 | import jakarta.persistence.Embeddable
7 | import java.math.BigDecimal
8 |
9 | @Embeddable
10 | data class EmployeeSalary(
11 | @Column(name = "salary", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun EmployeeSalary(int: Int): EmployeeSalary {
16 | return EmployeeSalary(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun EmployeeSalary(double: Double): EmployeeSalary {
20 | return EmployeeSalary(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/repository/author/AuthorRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.repository.author
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.author.Author
4 | import org.springframework.data.jpa.repository.JpaRepository
5 |
6 | interface AuthorRepository : JpaRepository
7 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/repository/book/BookRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.repository.book
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.book.Book
4 | import com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.book.Isbn
5 | import org.springframework.data.jpa.repository.JpaRepository
6 |
7 | interface BookRepository : JpaRepository
8 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/repository/department/DepartmentRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.repository.department
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.department.Department
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface DepartmentRepository : JpaRepository
9 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/repository/employee/EmployeeRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.repository.employee
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.employee.Employee
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface EmployeeRepository : JpaRepository
9 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/batch/jpql/repository/publisher/PublisherRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.batch.jpql.repository.publisher
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.batch.jpql.entity.publisher.Publisher
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface PublisherRepository : JpaRepository
9 |
--------------------------------------------------------------------------------
/example/spring-batch/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring.batch:
2 | job:
3 | enabled: false
4 |
5 | spring.jpa:
6 | database-platform: org.hibernate.dialect.MySQL8Dialect
7 | hibernate.ddl-auto: none
8 |
9 | spring.datasource:
10 | url: jdbc:h2:mem:testdb;MODE=MySQL
11 |
12 | decorator:
13 | datasource:
14 | p6spy.enable-logging: true
15 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/Application.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication
4 | import org.springframework.boot.runApplication
5 |
6 | @SpringBootApplication
7 | class Application
8 |
9 | fun main(args: Array) {
10 | runApplication(*args)
11 | }
12 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.book
4 |
5 | import java.math.BigDecimal
6 | import javax.persistence.Column
7 | import javax.persistence.Embeddable
8 |
9 | @Embeddable
10 | data class BookPrice(
11 | @Column(name = "price", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun BookPrice(int: Int): BookPrice {
16 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun BookPrice(double: Double): BookPrice {
20 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.book
2 |
3 | import java.io.Serializable
4 | import javax.persistence.Column
5 | import javax.persistence.Embeddable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.employee
2 |
3 | import javax.persistence.Column
4 | import javax.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/repository/author/AuthorRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.repository.author
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.author.Author
4 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutor
5 | import org.springframework.data.jpa.repository.JpaRepository
6 |
7 | interface AuthorRepository : JpaRepository, KotlinJdslJpqlExecutor
8 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/repository/book/BookRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.repository.book
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.book.Book
4 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.book.Isbn
5 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutor
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface BookRepository : JpaRepository, KotlinJdslJpqlExecutor
9 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/repository/department/DepartmentRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.repository.department
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.department.Department
6 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutor
7 | import org.springframework.data.jpa.repository.JpaRepository
8 |
9 | interface DepartmentRepository : JpaRepository, KotlinJdslJpqlExecutor
10 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/repository/employee/EmployeeRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.repository.employee
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.employee.Employee
4 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutor
5 | import org.springframework.data.jpa.repository.JpaRepository
6 |
7 | interface EmployeeRepository : JpaRepository, KotlinJdslJpqlExecutor
8 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/javax/jpql/repository/publisher/PublisherRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.repository.publisher
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.javax.jpql.entity.publisher.Publisher
6 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.javax.repository.KotlinJdslJpqlExecutor
7 | import org.springframework.data.jpa.repository.JpaRepository
8 |
9 | interface PublisherRepository : JpaRepository, KotlinJdslJpqlExecutor
10 |
--------------------------------------------------------------------------------
/example/spring-data-jpa-javax/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring.jpa:
2 | database-platform: org.hibernate.dialect.MySQL8Dialect
3 | hibernate.ddl-auto: none
4 |
5 | spring.datasource:
6 | url: jdbc:h2:mem:testdb;MODE=MySQL
7 |
8 | decorator:
9 | datasource:
10 | p6spy.enable-logging: true
11 |
12 | logging.level:
13 | com.linecorp.kotlinjdsl: debug
14 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/Application.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication
4 | import org.springframework.boot.runApplication
5 |
6 | @SpringBootApplication
7 | class Application
8 |
9 | fun main(args: Array) {
10 | runApplication(*args)
11 | }
12 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/annotation/CompositeId.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.annotation
2 |
3 | annotation class CompositeId
4 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/entity/book/BookPrice.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.book
4 |
5 | import jakarta.persistence.Column
6 | import jakarta.persistence.Embeddable
7 | import java.math.BigDecimal
8 |
9 | @Embeddable
10 | data class BookPrice(
11 | @Column(name = "price", scale = 2)
12 | val value: BigDecimal,
13 | )
14 |
15 | fun BookPrice(int: Int): BookPrice {
16 | return BookPrice(BigDecimal.valueOf(int.toLong()).setScale(2))
17 | }
18 |
19 | fun BookPrice(double: Double): BookPrice {
20 | return BookPrice(BigDecimal.valueOf(double).setScale(2))
21 | }
22 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/entity/book/Isbn.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.book
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 | import java.io.Serializable
6 |
7 | /**
8 | * International Standard Book Number
9 | */
10 | @Embeddable
11 | data class Isbn(
12 | @Column(name = "isbn")
13 | val value: String,
14 | ) : Serializable
15 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/entity/employee/EmployeeAddress.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.employee
2 |
3 | import jakarta.persistence.Column
4 | import jakarta.persistence.Embeddable
5 |
6 | @Embeddable
7 | data class EmployeeAddress(
8 | @Column(name = "zip_code")
9 | val zipCode: String,
10 |
11 | @Column(name = "street_address_1")
12 | val streetAddress1: String,
13 |
14 | @Column(name = "street_address_2")
15 | val streetAddress2: String?,
16 |
17 | @Column(name = "city")
18 | val city: String,
19 |
20 | @Column(name = "province")
21 | val province: String,
22 | )
23 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/repository/author/AuthorRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.repository.author
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.author.Author
4 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutor
5 | import org.springframework.data.jpa.repository.JpaRepository
6 |
7 | interface AuthorRepository : JpaRepository, KotlinJdslJpqlExecutor
8 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/repository/book/BookRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.repository.book
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.book.Book
4 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.book.Isbn
5 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutor
6 | import org.springframework.data.jpa.repository.JpaRepository
7 |
8 | interface BookRepository : JpaRepository, KotlinJdslJpqlExecutor
9 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/repository/department/DepartmentRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.repository.department
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.department.Department
6 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutor
7 | import org.springframework.data.jpa.repository.JpaRepository
8 |
9 | interface DepartmentRepository : JpaRepository, KotlinJdslJpqlExecutor
10 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/repository/employee/EmployeeRepository.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.repository.employee
2 |
3 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.employee.Employee
4 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutor
5 | import org.springframework.data.jpa.repository.JpaRepository
6 |
7 | interface EmployeeRepository : JpaRepository, KotlinJdslJpqlExecutor
8 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/kotlin/com/linecorp/kotlinjdsl/example/spring/data/jpa/jpql/repository/publisher/PublisherRepository.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("unused")
2 |
3 | package com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.repository.publisher
4 |
5 | import com.linecorp.kotlinjdsl.example.spring.data.jpa.jpql.entity.publisher.Publisher
6 | import com.linecorp.kotlinjdsl.support.spring.data.jpa.repository.KotlinJdslJpqlExecutor
7 | import org.springframework.data.jpa.repository.JpaRepository
8 |
9 | interface PublisherRepository : JpaRepository, KotlinJdslJpqlExecutor
10 |
--------------------------------------------------------------------------------
/example/spring-data-jpa/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring.jpa:
2 | database-platform: org.hibernate.dialect.MySQL8Dialect
3 | hibernate.ddl-auto: none
4 |
5 | spring.datasource:
6 | url: jdbc:h2:mem:testdb;MODE=MySQL
7 |
8 | decorator:
9 | datasource:
10 | p6spy.enable-logging: true
11 |
12 | logging.level:
13 | com.linecorp.kotlinjdsl: debug
14 |
--------------------------------------------------------------------------------
/example/src/main/resources/drop.sql:
--------------------------------------------------------------------------------
1 | drop table if exists author;
2 | drop table if exists publisher;
3 | drop table if exists book;
4 | drop table if exists book_author;
5 | drop table if exists book_publisher;
6 | drop table if exists department;
7 | drop table if exists employee;
8 | drop table if exists employee_department;
9 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | kotlin.code.style=official
2 | org.gradle.jvmargs=-Xmx2G
3 | org.gradle.parallel=true
4 | org.gradle.workers.max=4
5 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/line/kotlin-jdsl/437078544e065e6b55e6c3f4a04171a1e8ce4160/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jdsl-commitlint-node-package",
3 | "devDependencies": {
4 | "@commitlint/cli": "19.3.0",
5 | "@commitlint/config-conventional": "19.2.2"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/query-model/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | }
3 |
4 | dependencies {
5 | }
6 |
--------------------------------------------------------------------------------
/query-model/jpql/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | }
3 |
4 | dependencies {
5 | api(projects.queryModel)
6 | }
7 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/JpqlQuery.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.Query
5 |
6 | /**
7 | * Marker interface to represent a JPQL query.
8 | */
9 | @SinceJdsl("3.0.0")
10 | interface JpqlQuery> : JpqlQueryable, Query
11 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/JpqlQueryable.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.Queryable
5 |
6 | /**
7 | * Interface that can create [JpqlQuery].
8 | */
9 | @SinceJdsl("3.0.0")
10 | interface JpqlQueryable> : Queryable
11 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/delete/DeleteQuery.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.delete
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.JpqlQuery
5 |
6 | @SinceJdsl("3.0.0")
7 | interface DeleteQuery : JpqlQuery>
8 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/delete/impl/JpqlDeleteQuery.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.delete.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.delete.DeleteQuery
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.entity.Entity
6 | import com.linecorp.kotlinjdsl.querymodel.jpql.predicate.Predicate
7 |
8 | @Internal
9 | data class JpqlDeleteQuery internal constructor(
10 | val entity: Entity,
11 | val where: Predicate?,
12 | ) : DeleteQuery
13 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/entity/Entity.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.entity
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.QueryPart
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
6 | import com.linecorp.kotlinjdsl.querymodel.jpql.from.From
7 |
8 | @SinceJdsl("3.0.0")
9 | interface Entity : From, Expression, Entityable, QueryPart {
10 | @SinceJdsl("3.0.0")
11 | val alias: String
12 |
13 | override fun toEntity(): Entity = this
14 | override fun toExpression(): Expression = this
15 | override fun toFrom(): From = this
16 | }
17 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/entity/Entityable.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.entity
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expressionable
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.from.Fromable
6 |
7 | @SinceJdsl("3.0.0")
8 | interface Entityable : Expressionable, Fromable {
9 | @SinceJdsl("3.0.0")
10 | fun toEntity(): Entity
11 | }
12 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/entity/impl/JpqlDerivedEntity.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.entity.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.entity.Entity
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.select.SelectQuery
6 | import kotlin.reflect.KClass
7 |
8 | @Internal
9 | data class JpqlDerivedEntity(
10 | val selectQuery: SelectQuery,
11 | override val alias: String,
12 | ) : Entity {
13 | val type: KClass = selectQuery.returnType
14 | }
15 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/entity/impl/JpqlEntity.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.entity.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.entity.Entity
5 | import kotlin.reflect.KClass
6 |
7 | @Internal
8 | data class JpqlEntity internal constructor(
9 | val type: KClass,
10 | override val alias: String,
11 | ) : Entity
12 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/entity/impl/JpqlEntityTreat.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.entity.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.entity.Entity
5 | import kotlin.reflect.KClass
6 |
7 | @Internal
8 | data class JpqlEntityTreat internal constructor(
9 | val entity: Entity,
10 | val type: KClass,
11 | ) : Entity {
12 | override val alias: String get() = entity.alias
13 | }
14 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/Expression.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 | import com.linecorp.kotlinjdsl.querymodel.QueryPart
5 |
6 | @SinceJdsl("3.0.0")
7 | interface Expression : Expressionable, QueryPart {
8 | override fun toExpression(): Expression = this
9 | }
10 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/Expressionable.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 |
5 | @SinceJdsl("3.0.0")
6 | interface Expressionable {
7 | fun toExpression(): Expression
8 | }
9 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/Subquery.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression
2 |
3 | import com.linecorp.kotlinjdsl.SinceJdsl
4 |
5 | @SinceJdsl("3.0.0")
6 | interface Subquery : Expression
7 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlAbs.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | /**
7 | * Expression that applies the absolute value function to [value].
8 | */
9 | @Internal
10 | data class JpqlAbs internal constructor(
11 | val value: Expression<*>,
12 | ) : Expression
13 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlAliasedExpression.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | @Internal
7 | data class JpqlAliasedExpression internal constructor(
8 | val expr: Expression,
9 | val alias: Expression,
10 | ) : Expression
11 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlAvg.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | @Internal
7 | data class JpqlAvg internal constructor(
8 | val distinct: Boolean,
9 | val expr: Expression,
10 | ) : Expression
11 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCaseValue.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.path.Path
6 |
7 | @Internal
8 | data class JpqlCaseValue internal constructor(
9 | val value: Path,
10 | val whens: Map, Expression>,
11 | val `else`: Expression?,
12 | ) : Expression
13 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCaseWhen.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 | import com.linecorp.kotlinjdsl.querymodel.jpql.predicate.Predicate
6 |
7 | @Internal
8 | data class JpqlCaseWhen internal constructor(
9 | val whens: Map>,
10 | val `else`: Expression<*>?,
11 | ) : Expression
12 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCeiling.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | /**
7 | * Expression that calculates the ceiling of [value].
8 | */
9 | @Internal
10 | data class JpqlCeiling internal constructor(
11 | val value: Expression,
12 | ) : Expression
13 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCoalesce.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | /**
7 | * Expression that returns the first non-null value in the expressions,
8 | * or null if there are no non-null value in expressions.
9 | */
10 | @Internal
11 | data class JpqlCoalesce internal constructor(
12 | val expr: Iterable>,
13 | ) : Expression
14 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlConcat.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | @Internal
7 | data class JpqlConcat internal constructor(
8 | val values: Iterable>,
9 | ) : Expression
10 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCount.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 |
6 | @Internal
7 | data class JpqlCount internal constructor(
8 | val distinct: Boolean,
9 | val expr: Expression<*>,
10 | ) : Expression
11 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCurrentDate.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 | import java.sql.Date
6 |
7 | @Internal
8 | object JpqlCurrentDate : Expression
9 |
--------------------------------------------------------------------------------
/query-model/jpql/src/main/kotlin/com/linecorp/kotlinjdsl/querymodel/jpql/expression/impl/JpqlCurrentTime.kt:
--------------------------------------------------------------------------------
1 | package com.linecorp.kotlinjdsl.querymodel.jpql.expression.impl
2 |
3 | import com.linecorp.kotlinjdsl.Internal
4 | import com.linecorp.kotlinjdsl.querymodel.jpql.expression.Expression
5 | import java.sql.Time
6 |
7 | @Internal
8 | object JpqlCurrentTime : Expression