1

これは私の pom.xml です:

  <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.5.1-Final</version>
  </dependency>

  <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>3.6.10.Final</version>
  </dependency>

これら 2 つの依存関係があれば、Hello World の例を正常に実行できます。(これは、persistence.xml と、@Entity アノテーションを使用して DB 内のテーブルにマップされたクラスを使用します。ただし、hibernate-core を次のように変更すると:

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.2.1.Final</version>
  </dependency>

私は得る:

スレッド「メイン」の例外 java.lang.IllegalAccessError: クラス org.hibernate.ejb.Ejb3Configuration からメソッド org.hibernate.cfg.Configuration.(Lorg/hibernate/cfg/SettingsFactory;)V にアクセスしようとしました

では、どのように hibernate core 4.2.1 final を JPA 実装として使用できますか? hibernate-entitymanager のバージョン 4 はないと思いますか?

4

2 に答える 2

2

hibernate-entitymanager同じバージョンに変更するだけ

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.1.Final</version>
</dependency>
于 2013-05-11T23:43:46.960 に答える
2

この設定は私にとってはうまくいきます。4.xx と 3.xx を一緒に使用すると大きく異なるため、両方のコンポーネントに同じまたは類似のリリース/バージョン番号が必要です。

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.1.Final</version>
    </dependency>

(Hibernate またはその他の) バージョン番号を処理する一般的な方法は、次のように、プロパティで一度バージョンを指定することです。

<properties>
    <hibernate.version>4.1.1.Final</hibernate.version>
</properties>

そして、依存関係宣言でそのプロパティを参照します..

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
于 2013-05-11T23:44:09.310 に答える