【发布时间】:2020-02-06 14:20:55
【问题描述】:
我正在尝试在 beforeUpdate 事件中更改域对象的属性。问题是更改的属性没有到达数据库。有问题的域类将 dymanicUpdate 设置为 true。我注意到,如果我将 dynamicUpdate 更改为 false,则该属性将持久保存到数据库中。
我使用 GORM 6.0.11 创建了一个简单的 Grails 3.2.9 项目和一个域类。
class Example {
Integer status
Date dateCreated
Date dateClosed
Date lastUpdated
static constraints = {
status nullable: true
dateClosed nullable: true
}
static mapping = {
dynamicUpdate true
}
def beforeUpdate() {
if (isDirty('status')) {
dateClosed = new Date();
}
}
}
默认情况下,dynamicUpdate 设置为 false,并且我在 beforeUpdate 事件中更改的属性被持久化到数据库中。虽然,如果我将 dynamicUpdate 切换为 true,在 beforeUpdate 事件中更改的属性将不再保留到数据库中。我在 dateCreated 列中得到的不是当前日期。
知道这种行为的原因是什么,以及如何在 dynamicUpdate 设置为 true 的情况下获得相同的结果?
【问题讨论】:
标签: hibernate grails grails-orm