我有一个 Grails 2.2.1 项目,其域名名为“Question”。在此域中,beforeinsert() 目前如下所示:
def beforeInsert() {
dateCreated = new Date()
dateModified = new Date()
}
如果此值是从 Controller 传递的,我想更新dateCreated,如果不是,则按原样允许。这是我的修改,但不幸的是它不起作用:
def beforeInsert() {
dateCreated = dateCreated ? dateCreated : new Date()
println dateCreated
dateModified = new Date()
}
尽管 println 打印更新的 dateCreated 值,但当数据插入数据库时,dateCreated 字段每次都会获取当前时间戳的值。任何帮助表示赞赏:)
最佳答案
自动为您设置 dateCreated
的原因是 autoTimestamp
的默认行为。默认情况下,当域类中存在属性 dateCreated
时,Grails 将为您设置该值。
您可以禁用此默认行为,如下所示:
class Book {
…
static mapping = {
autoTimestamp false
}
}
您可能想查看documentation也是如此。
关于java - 属性的值无法在 beforeInsert() 内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41195860/