将Grails域属性的defaultValue设置为Joda-Time Period.ZERO

时间:2014-04-03 01:04:28

标签: grails plugins gorm jodatime

我一直在使用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属性保持为空并且为空。

1 个答案:

答案 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"为了它的工作。