【问题标题】:Do I need Hibernate-JPA 2.0 dependency in pom.xml for JBOSS 5 container?JBOSS 5 容器的 pom.xml 中是否需要 Hibernate-JPA 2.0 依赖项?
【发布时间】:2015-02-15 06:14:21
【问题描述】:

在我们使用的其中一个模块中,它只有Entities,它用于不同的模块, Entities 模块中hibernate 的依赖在pom.xml 中声明如下:

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

这是什么意思?

我以为我们使用的是JPA 2.0 API,底层实现是hibernate V1.0.1

我的同事说我们在编译时范围内有这种依赖关系,因为 JBOSS AS 5(这是我们的应用程序服务器)提供了休眠依赖关系(我猜是版本 > 3.4)。

我的问题是为什么在上面的依赖项中是 1.0.1 而不是 JBOSS 的休眠版本。 我同事说没关系。但我不明白为什么?我确信 JPA2.0 API 不会与 hibernate 1.0.1 兼容。那么我真的在使用 JPA 2.0 吗?

【问题讨论】:

    标签: hibernate maven jpa jboss java-ee-5


    【解决方案1】:

    在大多数应用服务器中,您可以覆盖提供的版本。不确定 JBoss 的确切机制,但这可能会有所帮助:

    http://www.openscope.net/2010/07/15/setting-up-a-jboss-instance-v5-x-class-loading/

    因此,为避免任何问题,请将 api 和实现 jar 捆绑到您的 WAR 中,并通过提供的任何方式配置服务器,以便这些本地 jar 优先。

    【讨论】:

      【解决方案2】:

      这是 JPA 2.0 的 1.0.1 版本。 1.0.1版本是JAR版本,不是代码实现的。

      它是 JPA 2(代码),jar 版本为 1.0.1。

      ------- 更新 1

      如果您不发送任何实现,您将使用 JPA 1。我发现:https://access.redhat.com/articles/112673 说 JBoss EAP 5 使用 JPA 1。

      如果您只发送 API,您将使用服务器的当前 JPA 实现。

      【讨论】:

      • 我如何知道我使用的是哪个休眠版本?
      • 如果我只发送API,会有问题,因为我为JPA2.0编译,正如你提到的JBOSS EAP5使用JPA1。 (但我用的是JBOSS AS5,相当于JBOSS EAP6)
      • 如果你使用 JPA 2 方法你会遇到问题。如果你不使用,例如,TypedQuery 而是使用 QUEery,你不会有任何问题。
      猜你喜欢
      • 2013-04-07
      • 2018-09-20
      • 1970-01-01
      • 2020-04-14
      • 2012-01-19
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2021-08-17
      相关资源
      最近更新 更多