Java Grails 3.3.2域类继承问题
我一直在从Grails 3.2.11迁移到3.3.2,遇到了一个奇怪的问题: 若域类继承自src/main/groovy中的一个类,那个么它将在第一次正确地创建并保存到DB中。但是,当您从数据库中检索它并尝试更新继承的属性时,它们不会保存回数据库 例: 如果在grails控制台中运行以下脚本,它将打印正确的值,但如果检查DB,则会存储一个旧值(在创建时设置):Java Grails 3.3.2域类继承问题,java,inheritance,grails,groovy,gorm,Java,Inheritance,Grails,Groovy,Gorm,我一直在从Grails 3.2.11迁移到3.3.2,遇到了一个奇怪的问题: 若域类继承自src/main/groovy中的一个类,那个么它将在第一次正确地创建并保存到DB中。但是,当您从数据库中检索它并尝试更新继承的属性时,它们不会保存回数据库 例: 如果在grails控制台中运行以下脚本,它将打印正确的值,但如果检查DB,则会存储一个旧值(在创建时设置): import testapp.Test new Test(field: 'original').save(flush: true) T
import testapp.Test
new Test(field: 'original').save(flush: true)
Test test = Test.list().find()
println test.properties
test.field = 'modified'
println test.save(flush: true)
test = Test.list().find()
println test.properties
看
我使用mysql,登录:'root',无通行证
JDBC日志记录(logSql:true)发现没有向DB发送更新查询,但内存中状态(例如Test.list()*.properties)的工作方式就好像继承的属性已成功更新一样
在3.2.11中,祖先属性的更新工作正常。在文档中找不到任何答案。我缺少什么?将@grails.gorm.dirty.checking.DirtyCheck添加到抽象类解决了这个问题
PS请参阅文档:(1.2.13.抽象基类的脏检查部分)尝试使用grails.gorm中的
@Entity
注释抽象类。blah@grails.gorm.annotation.Entity使抽象类成为具有单独DB表的持久实体。我只需要抽象类参与继承层次结构,而不需要额外的DB表。
import testapp.Test
new Test(field: 'original').save(flush: true)
Test test = Test.list().find()
println test.properties
test.field = 'modified'
println test.save(flush: true)
test = Test.list().find()
println test.properties