Grails脚手架 - 为JodaTime DateTime字段生成的MySQL列类型

Phi*_*enn 2 mysql grails grails-orm

我是Grails的新手,我正在使用带有MySQL 5.5后端的Grails 2.1构建一个示例项目来学习.

我安装了JodaTime 1.4 Plug-in然后运行 grails install-joda-time-templates

但是,当我将Domain Class字段声明为org.joda.time.DateTime类型时,尝试保存新条目时出错.

为了隔离问题,我创建了一个简单的域类:

import org.joda.time.DateTime

class Project
{
    String name
    DateTime startDate

    static constraints = {
        name(blank: false, maxSize: 50)
        startDate(validator: {return (it > new DateTime())})
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器只是设置脚手架以使用域类.

我的DataSource.groovy指定dbCreate = "create-drop",因为我让表格由Grails创建.

这是我尝试保存时出现的错误:

Class:com.mysql.jdbc.MysqlDataTruncation
Message:Data truncation: Data too long for column 'start_date' at row 1
Run Code Online (Sandbox Code Playgroud)

当我查看Grails创建的MySQL数据库中的project.start_date列时,类型为TINYBLOB.

我的想法是TINYBLOB可能不足以存储JodaTime DateTime字段的数据.

有谁知道如何让Grails创建一个合适的类型?

非常感谢你.

Tia*_*ias 5

在您的Config.groovy中:

grails.gorm.default.mapping = {
    "user-type" type: PersistentDateTime, class: DateTime
    "user-type" type: PersistentLocalDate, class: LocalDate
}
Run Code Online (Sandbox Code Playgroud)

你的映射关闭:

static mapping = {
    startDate type: PersistentDateTime
}
Run Code Online (Sandbox Code Playgroud)

看一下这篇文章了解更多信息,看看是否有帮助.