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

标签 hibernate jpa grails hibernate-mapping grails-domain-class

我正在尝试在项目中重用带有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/

相关文章:

java - Spring Boot - JPA 或 SQL 查询在连接表中查找最常见的项目?

java - 按类型表映射子类(多对一 Hibernate)

mysql - 在sql中对交叉表进行排序

java - 添加新条目时如何防止从双向 ManyToMany 集合中检索所有条目

spring - JPA、Hibernate 和 Spring 集成 : Table doesn't exist Error

mysql - Grails 域约束映射

grails - 运行Grails App时如何为嵌入式Tomcat指定Java选项(系统属性)?

grails - 从过滤器访问 'session'

java - getHibernateTemplate().flush() 函数

java - 相同的查询在 MSSQL 和 Hibernate 3 中给出不同的输出