【发布时间】:2009-04-10 12:33:27
【问题描述】:
可以从 Glassfish 项目 (glassfish-persistence-api) 中获取它还是可能有一个 Hibernate jar?
【问题讨论】:
-
+1 -- 我遇到了同样的问题,所以你为我解决了很多麻烦。
可以从 Glassfish 项目 (glassfish-persistence-api) 中获取它还是可能有一个 Hibernate jar?
【问题讨论】:
如果您使用的是 maven,添加以下依赖项应该可以工作
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
【讨论】:
如果您正在开发 OSGi 系统,我建议您从 Springsource Enterprise Bundle Repository 下载“捆绑”版本。
否则可以使用包含 javax.persistence 包的常规 jar 文件
【讨论】:
您可以使用与 hibernate 捆绑的 ejb3-persistence.jar。此 jar 仅包含 javax.persistence 包。
【讨论】:
在最新最好的 Hibernate 中,我能够通过在 lib/jpa 目录中包含 hibernate-jpa-2.0-api-1.0.0.Final.jar 来解决依赖关系。我在最近的下载中没有找到 ejb-persistence jar。
【讨论】:
hibernate.jar 和 hibernate-entitymanager.jar 只包含包 org.hibernate.*。所以你应该从 Glassfish 项目中获取它。
【讨论】:
对于 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 中心: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>
【讨论】:
总的来说,我同意上述建议添加 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。
【讨论】: