2013-03-24 233 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构建路径中。这很可能会解决这个问题。