grails - 在 Grails 域类中设置日期字段的默认值

标签 grails grails-domain-class

我正在尝试为 Date 设置默认值域类中的字段。

我可以用 defaultValuemapping配置,但它不适用于 Date字段(我已经在 StringInteger 上试过了,效果很好)。

这是一个例子:

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/

相关文章:

grails - 代理 : install grails fails with 'curl received HTTP 403 from proxy after CONNECT' 后面的 sdkman

grails - Grails GORM通过Domain映射内的值查找

用于日期验证的Grails最小约束

grails - 在grails中分配外键值

java - Grails 中自动生成字段

grails - 缺少方法异常

hibernate - 从SQL转换为HQL

grails - Grails-将自定义字段(列)添加到所有域对象-自动

grails - 域类save()方法(和其他方法)上的Grails 3 “MissingMethodException”错误

Grails 域类 : hasOne, 有许多没有属于