2013-03-24 223 views
16

我目前正在處理一個需要來自javax.persistence包的EntityManager EntityManagerFacotry和Persistence的項目。它似乎是針對數據庫服務的,但目前的代碼沒有很好的記錄。通過搜索谷歌似乎應該有一個XML文件,伴隨着這一點,但也沒有一個。我想我的問題只是如何讓這些未解決的進口消失?我是否需要將另一個jar添加到構建路徑?從1.5開始,我似乎不應該這樣做。無法解析導入javax.persistence

任何幫助,非常感謝。

+4

你確實需要一個jar文件和JPA API。但更重要的是,您需要實現這些JPA接口(Hibernate,EclipseLink,OPenJPA等)。坦率地說,試圖在不知道它是什麼的情況下使用JPA,以及選擇了哪種實現方式,這是一條確定的途徑。如果你繼承代碼,它至少應該有一個構建過程。 – 2013-03-24 12:10:25

+1

嗯......以及我同意。 – Matt 2013-03-24 12:17:38

+0

有趣的@JB Nizet,我的Google App Engine集成中發生了這個問題,並遵循分步說明什麼是過時的方式。整合模塊應該是捆綁的,所以Android應用程序不必處理細節。沒有提及JPA,並提到MAVEN將下載幷包含所有相關的SDK文件等。 – mobibob 2013-12-31 20:21:46

回答

17

hibernate-distribution-3.6.10.Final \ lib \ jpa:添加此jar來解決問題。它存在於lib文件夾裏面,你有一個名爲jpa --->裏面你有hibernate-jpa-2.0-1.0.1.Final文件夾

11

是的,你可能需要添加另一個jar或依賴關係

javax.persistence.*是Java Persistence API(JPA)的一部分。它只是一個API,你可以把它看作類似於一個接口。 JPA有許多實現,並且這個answer給出了每個的詳細闡述,以及使用哪個。

如果您的javax.persistence.*導入無法解析,您將需要提供實現JPA的jar。您可以通過手動下載它(並將其添加到項目中)或通過向依賴項管理工具(例如,Ivy/Maven/Gradle)添加聲明來做到這一點。有關Maven回購的EclipseLink實現(參考實現),請參閱here

這樣做後,您的進口應該解決。

另請參閱here瞭解JPA是什麼。您所指的xml可能是persistence.xml,鏈接第3頁對此進行了說明。

話雖這麼說,你可能只是指向了錯誤的目標運行時

如果我記錯,你並不需要提供一個JPA實現,如果你正在部署它變成像一個的JavaEE應用服務器JBoss的。請參閱here「請注意,在Java EE 6應用程序服務器(例如JBoss AS 6)中部署應用程序時,通常不需要它。」。嘗試改變你的項目的目標運行時。

如果您的本地項目設置爲指向Tomcat,而您的遠程倉庫承擔JavaEE服務器,則情況可能如此。有關Tomcat和JBoss之間的區別,請參閱here

編輯:我改變了我的項目,指向GlassFish而不是Tomcat,javax.persistence.*解決了很好,沒有任何顯式的JPA依賴。

+3

這是一個更好的解決方案,恕我直言。 – 2016-06-15 15:31:32

1

我的解決方案是選擇我在我的pom.xml中定義的maven配置文件,其中我聲明瞭hibernate依賴關係。

CTRL + ALT + P在eclipse中。

在我的項目中,我遇到了這個問題和許多其他問題,因爲在我的pom中,我有不同的配置文件來支持Glassfish 3,Glassfish 4和WildFly,因此我有不同的Hibernate容器以及不同的Java編譯目標和等等。選擇活動的maven配置文件解決了我的問題。

0

如果您使用Hibernate作爲JPA實現,並且您未使用Maven/Gradle,則更簡單的方法是逐個下載整個bundle而不是jar文件。

http://hibernate.org/orm/downloads/並下載最新的庫,從required文件夾中提取罐子。

1

如果有人使用Maven,則需要在POM.XML文件中添加依賴項。最新版本爲這篇文章的下面是:

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.1-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 
0

在新的休眠罐,你可以找到「hibernate-search-5.8.0.Final \ DIST \ LIB \提供\冬眠,JPA下所需的JPA文件-2.1-api-1.0.0.Final」。您必須將此jar文件添加到您的項目java構建路徑中。這很可能會解決這個問題。