无法在 beforeInsert() 中更新属性的值

Value of an attribute can't be updated within beforeInsert()

我有一个 Grails 2.2.1 项目,其域名为 'Question'。在这个域中,beforeinsert() 目前看起来像这样:

def beforeInsert() {
    dateCreated = new Date()
    dateModified = new Date()
}

如果此值是从控制器传递的,我想更新 dateCreated,如果不是,则按原样允许。这是我的修改,但不幸的是它不起作用:

def beforeInsert() {
    dateCreated = dateCreated ? dateCreated : new Date()
    println dateCreated
    dateModified = new Date()
}

即使println 打印更新的dateCreated 值,当数据插入数据库时​​,dateCreated 字段每次都会获取当前时间戳的值。任何帮助表示赞赏:)

之所以自动为您设置 dateCreated,是因为 autoTimestamp 的默认行为。默认情况下,当域 class 上存在 属性 dateCreated 时,Grails 将为您设置此值。

您可以禁用此默认行为:

class Book {
    …
    static mapping = {
        autoTimestamp false
    }
}

您可能还想查看 documentation