2013-05-11 75 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> 
相關問題