【问题标题】:What jar should I include to use javax.persistence package in a hibernate based application?我应该包含什么 jar 在基于休眠的应用程序中使用 javax.persistence 包?
【发布时间】:2009-04-10 12:33:27
【问题描述】:

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

【问题讨论】:

  • +1 -- 我遇到了同样的问题,所以你为我解决了很多麻烦。

标签: java hibernate jar


【解决方案1】:

如果您使用的是 maven,添加以下依赖项应该可以工作

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

【讨论】:

  • 我正在使用 intellij,它告诉我它找不到 javax.persistence。有什么想法吗?
【解决方案2】:

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

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

【讨论】:

【解决方案3】:

您可以使用与 hibernate 捆绑的 ejb3-persistence.jar。此 jar 仅包含 javax.persistence 包。

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        对于 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>
        

        【讨论】:

          【解决方案7】:

          总的来说,我同意上述建议添加 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依赖部分中的&lt;scope&gt;provided&lt;/scope&gt;:这意味着相应的jar不会被导出到工件的lib/中,而是由应用服务器提供。确保您的应用服务器实现指定版本的 JavaEE API。

          【讨论】:

            猜你喜欢
            • 2021-12-04
            • 2011-08-18
            • 2020-11-15
            • 2017-01-21
            • 1970-01-01
            • 2013-01-19
            • 2017-02-17
            • 2014-12-16
            • 2012-05-26
            相关资源
            最近更新 更多