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

时间:2016-12-17 06:07:58

标签: java grails gorm

我有一个名为“问题”的 Grails 2.2.1 项目。在此域中, 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字段每次都会获取当前时间戳的值。任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:0)

为您自动设置dateCreated的原因是autoTimestamp的默认行为。默认情况下,当域类中存在属性dateCreated时,Grails将为您设置此值。

您可以这样禁用此默认行为:

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

您可能还想查看documentation