gpt4 book ai didi

mysql - Grails Scaffold - 为 JodaTime DateTime 字段生成的 MySQL 列类型

转载 作者:行者123 更新时间:2023-11-29 01:31:12 26 4
gpt4 key购买 nike

我是 Grails 的新手,正在使用 Grails 2.1 和 MySQL 5.5 后端来构建示例项目以供学习。

我安装了 JodaTime 1.4 插件,然后运行 ​​grails install-joda-time-templates

但是,当我将域类字段声明为 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())})
}
}

Controller 只是将脚手架设置为使用域类。

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

这是我尝试保存时遇到的错误:

Class:com.mysql.jdbc.MysqlDataTruncation
Message:Data truncation: Data too long for column 'start_date' at row 1

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

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

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

非常感谢。

最佳答案

在你的 Config.groovy 中:

grails.gorm.default.mapping = {
"user-type" type: PersistentDateTime, class: DateTime
"user-type" type: PersistentLocalDate, class: LocalDate
}

还有你的映射闭包:

static mapping = {
startDate type: PersistentDateTime
}

看看this post有关详细信息,请查看是否有帮助。

关于mysql - Grails Scaffold - 为 JodaTime DateTime 字段生成的 MySQL 列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com