在基于hibernate的应用程序中,我应该包含哪些jar以使用javax.persistence包?

可以从Glassfish项目(glassfish-persistence-api)中获取它,或者可能有一个Hibernate jar?

如果您正在开发OSGi系统,我build议您从Springsource Enterprise Bundle Repository下载“ 捆绑 ”版本。

否则,可以使用包含javax.persistence包的常规jar文件

如果你正在使用maven,添加下面的依赖应该工作

<dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0</version> </dependency> 

你可以使用与hibernate捆绑在一起的ejb3-persistence.jar 。 这个jar只包含javax.persistence包。

在最新最好的Hibernate中,我能够通过在lib / jpa目录中包含hibernate-jpa-2.0-api-1.0.0.Final.jar来解决依赖问题。 我没有在最近的下载中findejb-persistence jar。

hibernate.jar和hibernate-entitymanager.jar只包含org.hibernate。*包。 所以你应该从Glassfish项目中拿走它。

对于JPA 2.1,javax.persistence包可以在这里find:

 <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Final</version> </dependency> 

请参阅: Maven Central上的hibernate-jpa-2.1-api该模式似乎是在JPA版本更改时更改人造名称。 如果这种情况继续发生,那么可以期待新版本到达Maven Central: Hibernate JPA版本

上面的JPA 2.1 APi可以和Hibernate 4.3.7结合使用,具体如下:

 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.7.Final</version> </dependency> 

一般来说,我同意上面的build议添加maven依赖的答案,但我更喜欢以下解决scheme。

为完整的JavaEEconfiguration文件添加API类的依赖关系:

 <properties> <javaee-api.version>7.0</javaee-api.version> <hibernate-entitymanager.version>5.1.3.Final</hibernate-entitymanager.version> </properties> <depencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>${javaee-api.version}</version> <scope>provided</scope> </dependency> </dependencies> 

还添加依赖与特定的JPA提供者,如antonyccbuild议:

 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate-entitymanager.version}</version> </dependency> 

注意API依赖部分中的<scope>provided</scope> :这意味着相应的jar不会被导出到工件的lib/ ,而是由应用服务器提供。 确保您的应用程序服务器实现了指定版本的JavaEE API。