104

CriteriaQueryに関連するタイプ セーフの精神で、JPA 2.0 には、エンティティのメタモデル表現をサポートする API もあります。

この API の完全に機能する実装 (メタモデル クラスを手動で作成するのではなく、メタモデルを生成するため) を知っている人はいますか? 誰かが Eclipse でこれを設定する手順を知っていれば素晴らしいことです (注釈プロセッサを設定するのと同じくらい簡単だと思いますが、あなたにはわかりません)。

編集: Hibernate JPA 2 Metamodel Generatorに出くわしました。しかし、jar のダウンロード リンクが見つからないため、問題は残ります。

編集 2: この質問をしてからしばらく経ちましたが、戻ってきて、 SourceForge の Hibernate JPA Model Generator プロジェクトへのリンクを追加すると思いました

4

7 に答える 7

91

誰かがEclipseでこれを設定する手順も知っていれば素晴らしいでしょう(注釈プロセッサを設定するのと同じくらい簡単だと思いますが、あなたは決して知りません)

はい、そうです。以下は、さまざまな JPA 2.0 実装の実装と手順です。

EclipseLink

休止状態

OpenJPA

データニュークリアス


最新の Hibernate 実装は、次の場所で入手できます。

古い Hibernate 実装は次の場所にあります。

于 2010-06-14T13:59:13.710 に答える
48

jpa-metamodels-with-maven-example をご覧ください。

休止状態

  • が必要org.hibernate.org:hibernate-jpamodelgenです。
  • プロセッサ クラスはorg.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.

依存関係として休止状態にする

    <dependency>
      <groupId>org.hibernate.orm</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
      <version>${version.hibernate-jpamodelgen}</version>
      <scope>provided</scope>
    </dependency>

プロセッサとして休止状態にする

      <plugin>
        <groupId>org.bsc.maven</groupId>
        <artifactId>maven-processor-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <compilerArguments>-AaddGeneratedAnnotation=false</compilerArguments> <!-- suppress java.annotation -->
              <processors>
                <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
              </processors>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.hibernate.orm</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <version>${version.hibernate-jpamodelgen}</version>
          </dependency>
        </dependencies>
      </plugin>

OpenJPA

  • が必要org.apache.openjpa:openjpaです。
  • プロセッサ クラスはorg.apache.openjpa.persistence.meta.AnnotationProcessor6.
  • OpenJPA には追加の要素が必要なようです<openjpa.metamodel>true<openjpa.metamodel>

依存関係としての OpenJPA

  <dependencies>
    <dependency>
      <groupId>org.apache.openjpa</groupId>
      <artifactId>openjpa</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <compilerArgs>
            <arg>-Aopenjpa.metamodel=true</arg>
          </compilerArgs>
        </configuration>
      </plugin>
    </plugins>
  </build>

プロセッサーとしての OpenJPA

      <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>${version.openjpa}</version>
          </dependency>
        </dependencies>
      </plugin>

EclipseLink

  • が必要org.eclipse.persistence:org.eclipse.persistence.jpa.modelgen.processorです。
  • プロセッサ クラスはorg.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.
  • EclipseLink には が必要persistence.xmlです。

依存関係としてのEclipseLink

  <dependencies>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
      <scope>provided</scope>
    </dependency>

プロセッサとしてのEclipseLink

    <plugins>
      <plugin>
        <groupId>org.bsc.maven</groupId>
        <artifactId>maven-processor-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <processors>
                <processor>org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor</processor>
              </processors>
              <compilerArguments>-Aeclipselink.persistencexml=src/main/resources-${environment.id}/META-INF/persistence.xml</compilerArguments>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
            <version>${version.eclipselink}</version>
          </dependency>
        </dependencies>
      </plugin>

データニュークリアス

  • が必要org.datanucleus:datanucleus-jpa-queryです。
  • プロセッサ クラスはorg.datanucleus.jpa.query.JPACriteriaProcessor.

依存関係としての DataNucleus

  <dependencies>
    <dependency>
      <groupId>org.datanucleus</groupId>
      <artifactId>datanucleus-jpa-query</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

プロセッサーとしての DataNucleus

      <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.datanucleus.jpa.query.JPACriteriaProcessor</processor>
              </processors>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-jpa-query</artifactId>
            <version>${version.datanucleus}</version>
          </dependency>
        </dependencies>
      </plugin>
于 2012-06-28T13:27:43.890 に答える
20

Dali (「Eclipse IDE for JEE Developers」に含まれる) による Eclipse の JPA 2.0 サポートには、Eclipse と統合された独自のメタモデル ジェネレーターがあります。

  1. パッケージ エクスプローラーでプロジェクトを選択します。
  2. [プロパティ] -> [ JPA ] ダイアログに移動します
  3. Canonical メタモデル (JPA 2.0)グループからソース フォルダーを選択します。
  4. [適用] ボタンをクリックして、選択したソース フォルダーにメタモデル クラスを生成します。

ここに画像の説明を入力

生成されたクラスは標準であるため、これはどの JPA プロバイダーでも機能するはずです。

こちらもご覧ください

于 2012-06-28T14:06:19.233 に答える
8

eclipselink の場合、メタモデルを生成するには、次の依存関係だけで十分です。他に何も必要ありません。

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
        <version>2.5.1</version>
        <scope>provided</scope>
    </dependency>
于 2014-06-09T11:47:46.517 に答える
6

最も一般的な IMHO であるプロバイダーとしての Hibernate の場合:

Gradle、Maven などのビルド ツールの場合、クラスパスに Hibernate JPA 2 Metamodel Generator jar が必要であり、コンパイラ レベル >=1.6 でプロジェクトをビルドすると、メタモデルが自動的に生成されます。

IDE Eclipse の場合 1. [プロジェクト] -> [プロパティ] -> [Java コンパイラ] -> [注釈処理] に移動し、有効にします。2. Annotation Processing -> Factory Path -> Add External Jar を展開し、Hibernate JPA 2 Metamodel Generator jar を追加します。新しく追加された jar を確認し、OK と言います。クリーン&ビルド完了!

Hibernate JPA 2 Metamodel Generator jar リンクを maven リポジトリからリンクする https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen

于 2016-07-13T09:35:51.673 に答える
1

OK、ここで読んだことに基づいて、このようにEclipseLinkannotationProcessorPathでそれを行いました.コンパイラプラグインの要素としてのみ、プロセッサの依存関係をプロジェクトに入れる必要はありませんでした.

    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <annotationProcessorPaths>
                <annotationProcessorPath>
                    <groupId>org.eclipse.persistence</groupId>
                    <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
                    <version>2.7.7</version>
                </annotationProcessorPath>
            </annotationProcessorPaths>
            <compilerArgs>
                <arg>-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml</arg>
            </compilerArgs>
        </configuration>
    </plugin>
于 2020-05-29T18:24:06.393 に答える