【问题标题】:Grails and JPA integrationGrails 和 JPA 集成
【发布时间】:2011-10-12 23:04:33
【问题描述】:

我正在尝试将 Java 域和服务层与 Grails 应用程序集成。 Java 项目使用 Maven 构建,Grails 项目从 Maven 存储库加载 JAR。服务项目包含一个 XML Spring 配置文件,它定义了一堆 Spring bean。我正在尝试通过将这些 bean 加载到 grails-app/conf/spring/resources.groovy

中,使这些对 Grails 应用程序可用
beans = {    
    importBeans('classpath:/applicationContext-services.xml')
}

此文件中的一个bean 是LocalContainerEntityManagerFactoryBean 的一个实例。在尝试创建此 bean 时,我收到错误:

创建类中定义的名称为“entityManagerFactory”的 bean 时出错 路径资源 [applicationContext-services.xml]:init 的调用 方法失败;嵌套异常是 java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

基于 Spring 的 JIRA 中的this issue,看起来根本问题是 Spring 和 Hibernate/JPA 版本之间存在一些不兼容。看来我正在使用:

  • Spring 3.0.5.RELEASE
  • 休眠 3.6.0.Final
  • Hibernate-jpa-2.0-api 1.0.0.Final

我尝试从 Grails 应用程序中删除 Hibernate 插件,但似乎没有任何区别。

【问题讨论】:

    标签: hibernate spring grails jpa


    【解决方案1】:

    我遇到了类似的问题,不得不使用降级我的 jpa 资源来休眠 3.3.2。 Grails 2.0 将支持休眠 3.6。

    【讨论】:

    • 谢谢,我需要降级 Hibernate 和 Hibernate-JPA JAR 还是只降级?
    • 我不肯定,但我敢肯定你必须使用 hibernate-entitymanager 而不是 jpa-2.0 参考。您还必须添加更多的休眠引用,因为旧版本已将验证器和注释等内容分开。有点痛:(
    • 我想您没有关于必要更改的更多具体信息?
    • 我尝试使用 2.0/1.4 的最新快照/里程碑,不再出现此问题
    【解决方案2】:

    将此添加到您的 pom.xml 或“lib”文件夹中:

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

    【讨论】:

      【解决方案3】:

      您可能还有其他定义 javax.persistence.spi.PersistenceUnitInfo 的 jar 摆脱那些。确保只有 hibernate-jpa-2.0-api-1.0.1.Final.jar 在类路径中。

      【讨论】:

        猜你喜欢
        • 2010-09-23
        • 2012-08-16
        • 2012-11-01
        • 2014-10-31
        • 2014-02-18
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多