我应该包含什么jar才能在基于hibernate的应用程序中使用javax.persistence包?

时间:2009-04-10 12:33:28

标签: java hibernate jar

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

7 个答案:

答案 0 :(得分:14)

如果您正在使用maven,则添加以下依赖项应该可以正常工作

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

答案 1 :(得分:12)

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

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

答案 2 :(得分:12)

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

答案 3 :(得分:8)

在最新最好的Hibernate中,我能够通过在lib / jpa目录中包含hibernate-jpa-2.0-api-1.0.0.Final.jar来解决依赖关系。我在最近的下载中找不到ejb-persistence jar。

答案 4 :(得分:4)

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

答案 5 :(得分:3)

对于JPA 2.1,可以在此处找到javax.persistence包:

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

请参阅:hibernate-jpa-2.1-api on Maven Central 该模式似乎是在JPA版本更改时更改人工制品名称。如果继续这样,新版本可以在这里到达Maven Central:Hibernate JPA versions

上述JPA 2.1 APi可与Hibernate 4.3.7结合使用,具体为:

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

答案 6 :(得分:3)

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

为完整的JavaEE配置文件添加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提供程序的依赖关系,如antonycc建议:

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

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