srk*_*Z84 12 grails grails-orm grails-domain-class grails-2.0
我有一个使用Grails 1.3.7的应用程序,我刚刚迁移到Grails 2.0.该应用程序使用自动dateCreated和lastUpdated字段来管理与创建和修改对象相关的时间戳.升级后,我收到以下错误:
| Running Grails application
| Error 2012-01-29 22:36:53,504 [Thread-8] ERROR util.JDBCExceptionReporter - ERROR: null value in column "date_created" violates not-null constraint
| Error 2012-01-29 22:36:53,510 [Thread-8] ERROR events.PatchedDefaultFlushEventListener - Could not synchronize database state with session
Run Code Online (Sandbox Code Playgroud)
在我的Domain Classes中注释掉上述字段会使问题消失.
有dateCreated与lastUpdated字段Grails的2.0被弃用?如果是这样,这是否意味着我必须编写代码来手动处理此功能或将代码移动到某种类型的插件,如audit-trail插件?
srk*_*Z84 17
好的,通过在域类定义中手动将autoTimestamp变量设置为"true"来修复它:
static mapping = {
autoTimestamp true
}
Run Code Online (Sandbox Code Playgroud)
我猜想在将项目从Grails 1.3.7迁移到2.0.0之后,没有设置此属性.
Grails 2.0仍然支持自动时间戳. 这是手册中列出(滚动起来,从这个链接位).
但是,它特别提到:
如果你把
nullable: false限制在任dateCreated或者lastUpdated,您的域名情况下将无法通过验证-你想可能不是什么.除非禁用了自动时间戳,否则请将约束保留在这些属性之外.