Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 属性的值可以';无法在beforeInsert()内更新_Java_Grails_Gorm - Fatal编程技术网

Java 属性的值可以';无法在beforeInsert()内更新

Java 属性的值可以';无法在beforeInsert()内更新,java,grails,gorm,Java,Grails,Gorm,我有一个Grails2.2.1项目,它有一个名为“问题”的域。在此域中,beforeinstert()当前的外观如下: def beforeinstert(){ dateCreated=新日期() dateModified=新日期() } 如果此值是从控制器传递的,我想更新dateCreated,如果不是,则按原样允许。这是我的修改,但不幸的是它不起作用: def beforeinstert(){ dateCreated=dateCreated?dateCreated:new Date() p

我有一个Grails2.2.1项目,它有一个名为“问题”的域。在此域中,beforeinstert()当前的外观如下:

def beforeinstert(){
dateCreated=新日期()
dateModified=新日期()
}
如果此值是从控制器传递的,我想更新dateCreated,如果不是,则按原样允许。这是我的修改,但不幸的是它不起作用:

def beforeinstert(){
dateCreated=dateCreated?dateCreated:new Date()
println-dateCreated
dateModified=新日期()
}

即使println打印更新的dateCreated值,当数据插入数据库时,dateCreated字段每次都会获取当前时间戳的值。感谢您的帮助:)

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

您可以禁用此默认行为,例如:

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

您可能还想签出。

自动为您设置
创建日期的原因是
自动时间戳的默认行为。默认情况下,当域类上存在属性
dateCreated
时,Grails将为您设置此值

您可以禁用此默认行为,例如:

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

您可能还想签出。

发布域的
映射
部分。尚未映射任何内容。发布域的
映射
部分。尚未映射任何内容。是否有任何方法可以根据条件设置自动时间戳值?例如,仅当我手动提供dateCreated值时,我希望autoTimestamp为false。您是否尝试在插入前使用
代码并禁用
autoTimestamp
?这应该能满足你的需要。谢谢。是否有任何方法可以根据条件设置自动时间戳值?例如,仅当我手动提供dateCreated值时,我希望autoTimestamp为false。您是否尝试在插入前使用
代码并禁用
autoTimestamp
?这应该能实现你想要的。