mat*_*eca 5 grails grails-domain-class
我正在尝试为DateDomain类中的字段设置默认值.
我可以使用defaultValue的mapping配置,但它不与工作Date领域(我就试了一下String,并Integer和正常工作).
这是一个例子:
class Something {
Date myField
static mapping = {
myField defaultValue: new Date()
}
}
Run Code Online (Sandbox Code Playgroud)
此代码失败,因为Hibernate生成的CREATE语句不正确.它是这样的:
... my_field datetime default Mon Nov 25 17:59:08 UYST 2013 not null ...
Run Code Online (Sandbox Code Playgroud)
cod*_*ark 12
您始终可以在静态初始化程序中初始化字段或在构造函数中设置值:
class Something {
// initializer
Date myField = new Date()
// or in the ctor
Something() {
myField = new Date()
}
}
Run Code Online (Sandbox Code Playgroud)
这不会在数据库模式中设置默认值,它只是在创建实例时设置字段的值.如果您希望架构具有默认值,则可以使用'defaultValue'映射条目,如下所示:
class Something {
Date myField
static mapping = {
myField defaultValue: "now()"
}
}
Run Code Online (Sandbox Code Playgroud)
您为默认值设置的值取决于您的数据库供应商.(注意使用sql now()方法而不是Java/Groovy new Date().