如何使用Hibernate实现JPA?

时间:2013-05-11 23:09:51

标签: java hibernate jpa

这是我的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>

当我有这两个依赖项时,我可以成功运行我的Hello World示例。 (它使用了persistence.xml和一个使用@Entity注释映射到我的数据库中的表的类。但是当我将我的hibernate-core更改为:

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

我明白了:

线程中的异常“main”java.lang.IllegalAccessError:尝试从类org.hibernate.ejb.Ejb3Configuration访问方法org.hibernate.cfg.Configuration。(Lorg / hibernate / cfg / SettingsFactory;)

那么如何将hibernate core 4.2.1 final作为JPA实现呢?我猜hibernate-entitymanager没有版本4?

2 个答案:

答案 0 :(得分:2)

只需将hibernate-entitymanager更改为相同版本

即可
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.1.Final</version>
</dependency>

答案 1 :(得分:2)

此设置适用于我。您需要两个组件的相同或相似的版本/版本号,因为如果您同时使用4.x.x和3.x.x它们会有太大的不同。

<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>