Grails 3.3.2域类继承问题

时间:2017-12-31 10:16:07

标签: java inheritance grails groovy gorm

我已经从Grails 3.2.11迁移到3.3.2并面临一个奇怪的问题:

如果域类继承自src / main / groovy中的类,则会在第一时间正确创建并保存到DB中。但是当您从数据库中检索它并尝试更新继承的属性时 - 它们不会保存回数据库。

例如:

abstract class AbstractTest {
    String field
}

class Test extends AbstractTest {

    static constraints = {
    }
}

如果您在grails控制台中运行以下脚本,它将打印正确的值,但如果您检查数据库 - 存储旧值(在创建时设置):

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

请参阅https://github.com/ahlinist/testGorm

我使用mysql,登录:' root',没有通过

JDBC日志记录(logSql:true)发现没有向DB发送更新查询,但内存状态(例如Test.list()*。属性)的工作方式就像继承的属性已成功更新一样。

更新祖先的属性在3.2.11中运行良好。无法在文档中找到任何答案。我错过了什么?

1 个答案:

答案 0 :(得分:1)

将@ grails.gorm.dirty.checking.DirtyCheck添加到抽象类中解决了这个问题。

PS请参阅文档:GORM upgrade notes 1.2.13。抽象基类的脏检查部分)