我正在尝试在项目中重用带有JPA批注的某些实体类。但不幸的是,我也是Hibernate和JPA的新手。当我尝试使用命令生成 Controller 时
“grails generate-all”我得到错误:
Error running generate-all: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.PropertyNotFoundException: Could not find a setter for property version in class example.MyBean
有一个非常简单的解决方案:使用getter / setter对添加字段“version”。但是我不想更改实体类,因为也许我想在其他一些非grails项目中重用它们。有没有一种方法可以将JPA注释与休眠映射文件一起使用,而不必在实体类中重复使用已使用的注释?
是的,这是个好主意还是有更好的方法?
最佳答案
您是否需要乐观锁定?我相信关闭此功能将解决此问题。
您应该使用class / optimistic-lock属性在全局或每个类的基础上通过hibernate配置进行操作,或者可以将hibernate批注添加到类中,但这显然意味着更改类并假定您正在使用hibernate。
您还可以使用aop编译器将版本文件/ getter / setter 或注释编织到构建域模型中
关于hibernate - Grails和JPA批注+ hibernate 映射文件。如何摆脱这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715756/