我目前正在开发一个需要 javax.persistence 包中的 EntityManager EntityManagerFacotry 和 Persistence 的项目。它似乎是针对数据库服务的,但当前代码的文档记录不是很好。通过搜索谷歌,似乎应该有一个 xml 文件随之而来,但也没有一个。我想我的问题只是如何让这些未解决的导入消失?我是否必须在构建路径中添加另一个 jar?看来我不应该这样做,因为它从 1.5 开始就存在了。
任何帮助是极大的赞赏。
我目前正在开发一个需要 javax.persistence 包中的 EntityManager EntityManagerFacotry 和 Persistence 的项目。它似乎是针对数据库服务的,但当前代码的文档记录不是很好。通过搜索谷歌,似乎应该有一个 xml 文件随之而来,但也没有一个。我想我的问题只是如何让这些未解决的导入消失?我是否必须在构建路径中添加另一个 jar?看来我不应该这样做,因为它从 1.5 开始就存在了。
任何帮助是极大的赞赏。
我遇到了同样的问题并意识到,由于我使用的是 spring boot,所以我需要做的就是添加以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
是的,您可能需要添加另一个 jar 或依赖项
javax.persistence.*
是 Java Persistence API ( JPA ) 的一部分。它只是一个API,你可以把它想象成一个接口。JPA 有很多实现,这个答案很好地阐述了每一个,以及使用哪个。
如果您的javax.persistence.*
导入无法解析,则需要提供实现 JPA 的 jar。您可以通过手动下载它(并将其添加到您的项目)或通过向依赖管理工具(例如,Ivy/Maven/Gradle)添加声明来做到这一点。有关Maven 存储库上的 EclipseLink 实现(参考实现),请参见此处。
之后,您的导入应该得到解决。
另请参阅此处了解 JPA 是关于什么的。您所指的 xml 可能是persistence.xml
,链接的第 3 页对此进行了说明。
话虽如此,您可能只是指向错误的目标运行时
如果我没记错的话,如果您将 JPA 部署到 JBoss 等 JavaEE 应用服务器中,则不需要提供 JPA 实现。请参阅此处“请注意,在 Java EE 6 应用程序服务器(例如 JBoss AS 6)中部署应用程序时通常不需要它。”。尝试更改项目的目标运行时。
如果您的本地项目设置为指向 Tomcat,而您的远程存储库假定为 JavaEE 服务器,则可能是这种情况。请参阅此处了解 Tomcat 和 JBoss 之间的区别。
编辑:我将我的项目更改为指向 GlassFish 而不是 Tomcat,并javax.persistence.*
在没有任何明确的 JPA 依赖的情况下很好地解决了问题。
hibernate-distribution-3.6.10.Final\lib\jpa :添加这个 jar 来解决问题。它存在于 lib 文件夹中,里面有一个名为 jpa 的文件夹 ---> 里面有 hibernate-jpa-2.0-1.0.1.Final jar
如果有人在使用 Maven,则需要在 POM.XML 文件中添加依赖项。这篇文章的最新版本如下:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
我通过添加以下依赖项解决了这个问题
<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>
如果您使用的是 spring boot 和 spring JPA,则在文件Gradle
中添加以下依赖项build.gradle
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.1.3.RELEASE'
}
我的解决方案是选择我在 pom.xml 中定义的 Maven 配置文件,我在其中声明了休眠依赖项。
CTRL + ALT + P
在日食。
在我的项目中,我遇到了这个问题和许多其他问题,因为在我的 pom 中,我有不同的配置文件来支持 Glassfish 3、Glassfish 4 和 WildFly,所以我每个容器都有不同版本的 Hibernate 以及不同的 Java 编译目标等等。选择活动的 Maven 配置文件解决了我的问题。
在较新的 hibernate jar 中,您可以在“hibernate-search-5.8.0.Final\dist\lib\provided\hibernate-jpa-2.1-api-1.0.0.Final”下找到所需的 jpa 文件。您必须将此 jar 文件添加到您的项目 java 构建路径中。这很可能会解决问题。
如果您使用 Hibernate 作为 JPA 实现并且没有使用 Maven/Gradle,则更简单的方法是下载整个包而不是一个一个下载 jar 文件。
转到http://hibernate.org/orm/downloads/required
并下载最新的库,从文件夹中提取 jar 。