Gradle アノテーションプロセッサでJPAメタモデルを生成する

blog1.mammb.com


Hibernate

Hibernate の jpamodelgen の場合は単に以下のように依存を追加する

dependencies {
    annotationProcessor("org.hibernate.orm:hibernate-jpamodelgen:6.6.7.Final")
}

Jakarta EE 11 から追加された Jakarta Data に対応したメタモデルプロセッサは Hibernate 7 となる

Jakarta Data の @Repository の実装も、このメタモデルプロセッサで生成されるが、生成されたクラスは Hibernate に依存したものとなる(Jakarta EE の API で完結しない)。

そのため、Hibernate のメタモデルプロセッサで生成されたクラスを Eclipselink で使うといったことができなくなった(Jakarta Data の リポジトリを利用しない場合はその限りでない)。


Eclipselink の場合は、-Aeclipselink.persistencexml オプションで persistence.xml を指定する必要がある。

dependencies {
    annotationProcessor("org.eclipse.persistence:org.eclipse.persistence.jpa.modelgen.processor:4.0.5")
}

tasks.withType<JavaCompile> {
    options.compilerArgs.add("-Aeclipselink.persistencexml=${project.projectDir.absolutePath}/src/main/resources/META-INF/persistence.xml")
}