├── .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