簡體   English   中英

Grails Scaffold-為JodaTime DateTime字段生成的MySQL列類型

[英]Grails Scaffold - Generated MySQL Column Type for JodaTime DateTime field

我是Grails的新手,並且正在將Grails 2.1與MySQL 5.5后端結合使用來構建要學習的示例項目。

我安裝了JodaTime 1.4插件,然后運行grails install-joda-time-templates

但是,當我將域類字段聲明為org.joda.time.DateTime類型時,嘗試保存新條目時出現錯誤。

為了找出問題,我創建了一個簡單的Domain Class:

import org.joda.time.DateTime

class Project
{
    String name
    DateTime startDate

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

控制器只是將腳手架設置為使用域類。

我的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
}

看看這篇文章以獲取更多信息,看看是否有幫助。

我做了什么使它起作用(Grails 2.1):

1)添加到buildConfig中:

compile "org.jadira.usertype:usertype.jodatime:1.9"

2)刷新依賴項

3)運行此命令以添加受支持的用戶類型:

grails install-joda-time-gorm-mappings

4)最后在域類中:

import org.jadira.usertype.dateandtime.joda.*

static mapping = {
 column_name type: PersistentDateTime
}

在此處找到文檔: 持久性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM