grails如何将默认值设置为日期

时间:2014-05-20 11:08:31

标签: grails

如果我们有域对象,例如销售交易,我们想要销售的日期。理想情况下,调用代码甚至不能设置属性,但这可能是不可能的。

如果我们考虑以下对象:

class salesTransaction{
  String description
  Item item
  Date soldAt

static constraintes = {
    description blank: false
    item blank: false
    soldAt blank: false, defaultValue: new Date()
}

这看起来应该有效,但是save()总是失败,属性已售出不能为空。

如果我在Java中使用这个bean,我只会公开一个构造函数,它只获取所需的参数,选项器的setter,以及soldAt的setter。我假设没有办法用grails模拟这个。

无论如何,anyohne知道如何做默认参数?

最好的解决方案是在DB中执行此操作,即在db中将默认值设置为" now()",但是无法使用grails约束指定。

人们如何实施这类事情?

2 个答案:

答案 0 :(得分:1)

如果您只想让日期表示您最初将SalesTransaction保存到数据库的时间,您可以只声明Date dateCreated之类的属性并让框架管理其值。有关详细信息,请参阅http://grails.org/doc/latest/guide/GORM.html#eventsAutoTimestamping

答案 1 :(得分:1)

您可以使用beforeInsert事件:

class salesTransaction{
  String description
  Item item
  Date soldAt

static constraintes = {
    description blank: false
    item blank: false
    soldAt blank: false
}

def beforeInsert() {
    if (soldAt == NULL_DATE) {
         soldAt = new Date()
    }
}

}