我一直在使用Grails的Joda-Time插件。我真的开始喜欢它但是,我试图为域属性设置默认值(Period type:PersistentPeriod)。一切都很好。我可以保存和检索Joda-Time数据,标签库运行良好,计算和转换完美无缺,但是当我在为Joda-Time属性设置默认值后尝试编译时,一切都会爆炸。 例如:
class Person {
DateTime date
Period totalTime
static mapping = {
totalTime (type: PersistentPeriod, defaultValue:Period.ZERO)
date (type: PersistentDateTime, defaultValue:DateTime.now())
}
}
有没有办法用默认值执行此操作,或者我应该将Joda-Time属性保持为空并且为空。
答案 0 :(得分:2)
指定" defaultValue"不会以你试图使用它的方式工作。它用作MySQL在指定create table语法时可以使用的默认值。如果您只是想要任何没有将值设置为默认值的类,那么重写您的Person类,如下所示:
class Person {
DateTime date = DateTime.now()
Period totalTime = Period.ZERO
static mapping = {
totalTime (type: PersistentPeriod)
date (type: PersistentDateTime)
}
}
或者你可以使用defaultValue:" CURRENT_TIMESTAMP"对于DateTime.now(),MySQL将期望一个字段类型" TIMESTAMP"而不是" DATETIME"为了它的工作。