41

我目前正在开发一个需要 javax.persistence 包中的 EntityManager EntityManagerFacotry 和 Persistence 的项目。它似乎是针对数据库服务的,但当前代码的文档记录不是很好。通过搜索谷歌,似乎应该有一个 xml 文件随之而来,但也没有一个。我想我的问题只是如何让这些未解决的导入消失?我是否必须在构建路径中添加另一个 jar?看来我不应该这样做,因为它从 1.5 开始就存在了。

任何帮助是极大的赞赏。

4

9 回答 9

40

我遇到了同样的问题并意识到,由于我使用的是 spring boot,所以我需要做的就是添加以下依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
于 2018-08-01T14:12:32.317 回答
29

是的,您可能需要添加另一个 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 依赖的情况下很好地解决了问题。

于 2016-05-19T04:59:09.797 回答
28

hibernate-distribution-3.6.10.Final\lib\jpa :添加这个 jar 来解决问题。它存在于 lib 文件夹中,里面有一个名为 jpa 的文件夹 ---> 里面有 hibernate-jpa-2.0-1.0.1.Final jar

于 2013-03-26T07:01:46.493 回答
23

如果有人在使用 Maven,则需要在 POM.XML 文件中添加依赖项。这篇文章的最新版本如下:

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
于 2017-09-01T13:20:02.790 回答
2

我通过添加以下依赖项解决了这个问题

<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>
于 2019-09-16T21:33:33.360 回答
2

如果您使用的是 spring boot 和 spring JPA,则在文件Gradle中添加以下依赖项build.gradle

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.1.3.RELEASE'
} 
于 2019-03-28T09:43:48.157 回答
1

我的解决方案是选择我在 pom.xml 中定义的 Maven 配置文件,我在其中声明了休眠依赖项。

CTRL + ALT + P在日食。

在我的项目中,我遇到了这个问题和许多其他问题,因为在我的 pom 中,我有不同的配置文件来支持 Glassfish 3、Glassfish 4 和 WildFly,所以我每个容器都有不同版本的 Hibernate 以及不同的 Java 编译目标等等。选择活动的 Maven 配置文件解决了我的问题。

于 2016-07-26T07:06:06.717 回答
0

在较新的 hibernate jar 中,您可以在“hibernate-search-5.8.0.Final\dist\lib\provided\hibernate-jpa-2.1-api-1.0.0.Final”下找到所需的 jpa 文件。您必须将此 jar 文件添加到您的项目 java 构建路径中。这很可能会解决问题。

于 2018-02-21T01:05:21.710 回答
0

如果您使用 Hibernate 作为 JPA 实现并且没有使用 Maven/Gradle,则更简单的方法是下载整个包而不是一个一个下载 jar 文件。

转到http://hibernate.org/orm/downloads/required并下载最新的库,从文件夹中提取 jar 。

于 2017-05-09T06:04:21.013 回答