2013-05-11 74 views
1

这是我的pom.xml:如何使用Hibernate实现JPA?

<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标注类然而,当我改变我的休眠核到:

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

我得到:

异常在线程 “主” java.lang.IllegalAccessError:尝试访问方法org.hibernate.cfg.Configuration(Lorg /休眠/ cfg中/ SettingsFactory)从类org.hibernate.ejb.Ejb3Configuration

那么如何V我可以使用hibernate core 4.2.1 final作为JPA实现吗?我想hibernate-entitymanager没有第4版?

回答

2

只是改变hibernate-entitymanager到相同的版本

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.2.1.Final</version> 
</dependency> 
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> 
相关问题