Grails和JPA批注+休眠映射文件。如何摆脱这个错误?

| 我正在尝试在项目中重用带有JPA批注的某些实体类。但不幸的是,我也是Hibernate和JPA的新手。当我尝试使用命令生成控制器时 \“ grails generate-all \”我收到错误消息: 运行generate-all时出错:错误 用名字创建bean \'messageSource \':的初始化 豆失败;嵌套异常为 org.springframework.beans.factory.BeanCreationException: 创建名称为bean的错误 \'transactionManager \':无法解析 引用bean \'sessionFactory \' 设置bean属性时 \'sessionFactory \';嵌套异常为 org.springframework.beans.factory.BeanCreationException: 创建名称为bean的错误 \'sessionFactory \':调用init 方法失败;嵌套异常为 org.hibernate.PropertyNotFoundException: 找不到财产的设定者 类example.MyBean中的版本 有一个非常简单的解决方案:在getter / setter对中添加字段“ version”。但是我不想更改我的实体类,因为可能我想在其他一些非grails项目中重用它们。有没有一种方法可以将JPA注释与休眠映射文件一起使用,而无需在实体类中重复使用已使用的注释? 是的,这是个好主意还是有更好的方法?
已邀请:
您是否需要乐观锁定?我相信关闭此功能将解决此问题。 您应该使用class / optimistic-lock属性通过hibernate配置在全局或每个类的基础上进行操作,或者可以将hibernate批注添加到类中,但这显然意味着更改类并假定您正在使用hibernate。 您还可以使用aop编译器将版本文件/获取器/设置器或注释编织到构建域模型中
在您的xml映射文件中有:
<hibernate-mapping default-access=\"field\">
default-access(可选-默认为property):Hibernate应该使用该策略访问所有属性。 如果将其设置为“ 1”,休眠将直接读取字段,而无需使用吸气剂。 当然,您至少需要一个字段。您不能仅映射不存在的任意属性。 (嗯,也许您可​​以使用一些“魔术”,但是我建议不要这样做)

要回复问题请先登录注册