如果我们有域对象,例如销售交易,我们想要销售的日期。理想情况下,调用代码甚至不能设置属性,但这可能是不可能的。
如果我们考虑以下对象:
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约束指定。
人们如何实施这类事情?
答案 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()
}
}
}