我正在尝试为 Date
设置默认值域类中的字段。
我可以用 defaultValue
在 mapping
配置,但它不适用于 Date
字段(我已经在 String
和 Integer
上试过了,效果很好)。
这是一个例子:
class Something {
Date myField
static mapping = {
myField defaultValue: new Date()
}
}
此代码失败,因为 Hibernate 生成的 CREATE 语句不正确。它是这样的:
... my_field datetime default Mon Nov 25 17:59:08 UYST 2013 not null ...
最佳答案
您始终可以在静态初始化程序中初始化字段或在构造函数中设置值:
class Something {
// initializer
Date myField = new Date()
// or in the ctor
Something() {
myField = new Date()
}
}
这不会在数据库模式中设置默认值,它只是在创建实例时设置字段的值。如果您希望架构具有默认值,您可以使用“defaultValue”映射条目,如下所示:
class Something {
Date myField
static mapping = {
myField defaultValue: "now()"
}
}
您为默认值设置的值取决于您的数据库供应商。 (注意使用 sql
now()
方法而不是 Java/Groovy new Date()
。
关于grails - 在 Grails 域类中设置日期字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202702/