Grails 3.3.2 域 类 继承问题

Grails 3.3.2 domain classes inheritance issue

我一直在从 Grails 3.2.11 迁移到 3.3.2,但遇到了一个奇怪的问题:

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

例如:

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) 发现没有更新查询发送到数据库,但内存状态(例如 Test.list()*.properties)就像继承的 属性已更新成功。

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

将@grails.gorm.dirty.checking.DirtyCheck 添加到摘要 class 解决了问题。

PS 请参阅文档:GORM upgrade notes1.2.13。抽象基数 类 部分的脏检查)