【问题标题】:Hibernate Annotations together with EntityManagerHibernate Annotations 和 EntityManager
【发布时间】:2013-07-11 08:28:56
【问题描述】:

我创建了一个 Jar 模块,其休眠依赖项为

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.5.6-Final</version>
</dependency>

并且 Jar 模块可以正确编译。该 Jar 模块由具有休眠依赖关系的 War 模块引用

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

在运行时,战争模块给出了一个例外

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource

然后是

java.lang.NoSuchMethodError: org.hibernate.mapping.SimpleValue.<init>(Lorg/hibernate/mapping/Table;)V

似乎hibernate的版本不兼容。一旦从 Jar 模块中删除了依赖项。一切正常。但我需要那个 Jar 模块的依赖。我该如何克服呢?

【问题讨论】:

    标签: java hibernate maven exception


    【解决方案1】:

    自从 Hibernate 3.6 hibernate-annotations 被合并到 hibernate-core (这是 hibernate-entitymanager 的传递依赖)。您不再需要显式声明hibernate-annotations。

    【讨论】:

    • 但正如他所说,他需要jar中的hibernate依赖。
    • 我的 Jar 模块中有休眠注释。我需要通过依赖来解决它。否则,它会给出编译错误。应该使用什么依赖项来解析该独立 Jar 模块的休眠注释。这些有特定的版本吗?
    【解决方案2】:

    你不能确保jar和war中的hibernate版本是一样的吗?

    【讨论】:

    • 我也尝试过这种方式,将 3.5.6-Final 添加到两个依赖项中。但同样的例外。
    • maven依赖树显示什么? mvn dependency:tree 我想。也许还有一些其他工件依赖于另一个休眠版本?
    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2011-04-02
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多