无法解析导入javax.persistence

时间:2013-03-24 12:03:36

标签: eclipse persistence

我目前正在开发一个项目,该项目需要来自javax.persistence包的EntityManager EntityManagerFacotry和Persistence。它似乎适用于数据库服务,但目前的代码没有很好的记录。通过搜索谷歌似乎应该有一个与此一起出现的xml文件,但也没有其中一个。我想我的问题只是如何让这些未解决的进口消失?我是否必须在构建路径中添加另一个jar?似乎我不应该这样做,因为它自1.5以来一直存在。

非常感谢任何帮助。

9 个答案:

答案 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>