java - 属性的值无法在 beforeInsert() 内更新

标签 java grails grails-orm

我有一个 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/

相关文章:

java - 如何使用 JSOUP 从网站中提取正文并排除存档和链接到其他网页

json - Grails 2.2 对需要请求 JSON 内容的远程 Web 服务的功能测试

grails - Grails在运行时更改数据源(JDBC URL)

hibernate - Grails withNewSession 不会刷新

hibernate - 在加载域之前修改gorm映射

java - 使用随机生成的数字读取数组

java - 我如何(漂亮地)将这部分代码提取到子类中?

java - Android GridView 重绘问题

grails - 如何在数据库级别为一对多关联设置唯一性?

Grails 数据库迁移插件