无法在 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。
我有一个 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。