CriteriaQuery に関連付けられたタイプセーフティの精神で、JPA 2.0には、 メタモデル エンティティの表現をサポートするAPIもあります。
誰でもこのAPIの完全に機能する実装を知っていますか(メタモデルクラスを手動で作成するのではなく、メタモデルを生成するために)? Eclipseでこれを設定する手順を誰かが知っていれば素晴らしいでしょう(注釈プロセッサを設定するのと同じくらい簡単だと思いますが、あなたは決して知りません)。
編集:ちょうどつまずいた Hibernate JPA 2 Metamodel Generator 。ただし、jarのダウンロードリンクが見つからないため、問題は残ります。
編集2:私はこの質問をしてからしばらく経ちましたが、戻ってきて、SourceForgeの Hibernate JPA Model Generatorプロジェクトへのリンクを追加すると思いました
誰かがEclipseでこれを設定する手順を知っていたら素晴らしいでしょう(注釈プロセッサを設定するのと同じくらい簡単だと思いますが、あなたは決して知りません)
はい、そうです。さまざまなJPA 2.0実装の実装と手順は次のとおりです。
org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
org.Apache.openjpa.persistence.meta.AnnotationProcessor6
org.datanucleus.jpa.JPACriteriaProcessor
最新のHibernate実装は、次の場所から入手できます。
古いHibernate実装は次の場所にあります。
jpa-metamodels-with-maven をご覧ください
Hibernateの使用が最も推奨されます。
(私はそれらの実装に関する機能/機能/使用可能性/安定性を判断していません。そして、上記の声明は私が構築したMavenの使用にのみ焦点を当てています。)
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>4.3.4.Final</version>
</dependency>
</dependencies>
</plugin>
OpenJPAには追加の要素<openjpa.metamodel>true<openjpa.metamodel>
が必要なようです。
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.Apache.openjpa.persistence.meta.AnnotationProcessor6</processor>
</processors>
<optionMap>
<openjpa.metamodel>true</openjpa.metamodel>
</optionMap>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.Apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</plugin>
EclipseLinkにはpersistence.xml
が必要です。
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.Eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.Eclipse.persistence</groupId>
<artifactId>org.Eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.1</version>
</dependency>
</dependencies>
</plugin>
=======================================
Apache Mavenユーザーの場合、
次の簡単な設定はうまくいくようです。 (古いmaven-compiler-pluginで;更新されました。)
<!-- This method doesn't work with newest maven-compiler-plugin -->
<!-- But if it's ok to work with old maven-compiler-plugin -->
<!-- This is the best method -->
<!-- There is no other required configurations -->
<!-- We don't even require to config any processor names -->
<project>
<build>
<extensions>
<extension>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.3.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version> <!-- this is critical -->
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
「mvn compiler:compile」で実行できます
[〜#〜] update [〜#〜]
このメソッドは、古いmaven-compiler-pluginでのみ機能することに注意してください。コードでバージョンを確認してください。
DaliによるEclipseのJPA 2.0サポート(「Eclipse IDE for JEE Developers」に含まれています)には、Eclipseと統合された独自のメタモデルジェネレーターがあります。
生成されたクラスは標準であるため、これはどのJPAプロバイダーでも動作するはずです。
here も参照してください。
Eclipselinkの場合、メタモデルを生成するには次の依存関係のみで十分です。他に何も必要ありません。
<dependency>
<groupId>org.Eclipse.persistence</groupId>
<artifactId>org.Eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.1</version>
<scope>provided</scope>
</dependency>
最も一般的なIMHOであるプロバイダーとしてのHibernateの場合:
Gradle、Mavenなどのビルドツールの場合、クラスパスとコンパイラレベル> = 1.6にHibernate JPA 2メタモデルジェネレーターjarが必要です。プロジェクトをビルドするのに必要なのはそれだけで、メタモデルは自動的に生成されます。
IDE Eclipse 1.の場合、[プロジェクト]-> [プロパティ]-> [Javaコンパイラ]->注釈処理を有効にします。] 2. [注釈処理]-> [ファクトリパス]-> [外部Jarの追加] 2メタモデルジェネレーターjarで、新しく追加されたjarを確認し、「OK」と言います。
MavenリポジトリからHibernate JPA 2メタモデルジェネレーターjarリンクをリンクします https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen