我目前正在开发一个项目,该项目需要来自javax.persistence包的EntityManager EntityManagerFacotry和Persistence。它似乎适用于数据库服务,但目前的代码没有很好的记录。通过搜索谷歌似乎应该有一个与此一起出现的xml文件,但也没有其中一个。我想我的问题只是如何让这些未解决的进口消失?我是否必须在构建路径中添加另一个jar?似乎我不应该这样做,因为它自1.5以来一直存在。
非常感谢任何帮助。
答案 0 :(得分:21)
hibernate-distribution-3.6.10.Final \ lib \ jpa:添加此jar以解决问题。它存在于lib文件夹里面,你有一个名为jpa --->的文件夹。你有hibernate-jpa-2.0-1.0.1.Final jar
里面答案 1 :(得分:19)
是的,您可能需要添加另一个jar或依赖
javax.persistence.*
是Java Persistence API(JPA)的一部分。它只是一个API,您可以将其视为与接口类似。 JPA有很多实现,这个answer给出了很好的详细说明,以及要使用的内容。
如果无法解析javax.persistence.*
导入,则需要提供实现JPA的jar。您可以通过手动下载(并将其添加到项目中)或通过向依赖关系管理工具添加声明(例如,Ivy / Maven / Gradle)来实现。有关Maven repo上的EclipseLink实现(参考实现),请参阅here。
执行此操作后,应解决导入问题。
另请参阅here了解JPA的内容。您指的xml可能是persistence.xml
,链接的第3页对此进行了解释。
话虽如此,您可能只是指向错误的目标运行时
如果我没记错的话,如果要将它部署到像JBoss这样的JavaEE应用服务器中,则不需要提供JPA实现。请参阅here"请注意,在Java EE 6应用程序服务器(例如JBoss AS 6)中部署应用程序时,通常不需要它。"。尝试更改项目的目标运行时。
如果您的本地项目设置为指向Tomcat,而远程repo假定JavaEE服务器,则可能是这种情况。有关Tomcat和JBoss之间的区别,请参阅here。
编辑:我将项目更改为指向GlassFish而不是Tomcat,javax.persistence.*
已解决,没有任何明确的JPA依赖。
答案 2 :(得分:7)
如果有人使用Maven,您需要在POM.XML文件中添加依赖项。这篇文章的最新版本如下:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
答案 3 :(得分:2)
我遇到了同样的问题,并意识到,由于我使用的是Spring Boot,因此解决此问题所需要做的就是添加以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
答案 4 :(得分:1)
我的解决方案是选择我在pom.xml中定义的maven配置文件,我在其中声明了hibernate依赖项。
日食中的 CTRL + ALT + P
。
在我的项目中,我遇到了这个问题以及其他许多问题因为在我的pom中我有不同的配置文件来支持Glassfish 3,Glassfish 4和WildFly所以我每个容器都有不同的Hibernate版本以及不同的Java编译目标等等上。选择活动的maven配置文件解决了我的问题。
答案 5 :(得分:0)
如果您使用Hibernate作为JPA实现并且您没有使用Maven / Gradle,则更简单的方法是逐个下载整个bundle而不是jar文件。
转到http://hibernate.org/orm/downloads/并下载最新的库,从required
文件夹中提取jar。
答案 6 :(得分:0)
在较新的hibernate jar中,你可以在&#34; hibernate-search-5.8.0.Final \ dist \ lib \ provided \ hibernate-jpa-2.1-api-1.0.0.Final&#下找到所需的jpa文件。 34 ;.您必须将此jar文件添加到项目java构建路径中。这很可能会解决这个问题。
答案 7 :(得分:0)
如果您将gradle与spring boot和spring JPA结合使用,则在build.gradle文件中添加以下依赖项
依赖项{ 编译组:“ org.springframework.boot”,名称:“ spring-boot-starter-data-jpa”,版本:“ 2.1.3.RELEASE”
}
答案 8 :(得分:0)
我通过添加以下依赖项解决了这个问题
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>2.2</version>
</dependency>
与
一起<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>