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