使用gorm映射现有的mysql数据库

时间:2011-12-30 09:24:29

标签: mysql grails map joomla gorm

我正在尝试使用GORM和Grails 2.0映射(一小部分)Joomla MySQL数据库。

我正在阅读一本关于论证的书(Grails)并在网上搜索技术文章,但我仍然需要一个很好的参考来将Groovy / Java类型映射到MySQL字段。

我从一个简单的表jos_bannerclient开始。

class BannerClient {
    String name
    String contact
    String email
    String notes
    String editor = ''

    static constraints = {
        name(blank:false)
        contact(nullable:true)
        email(nullable:true)
        notes(nullable:true)
        editor(nullable:true)
    }

    static mapping = {
        datasource 'joomla'
        table 'jos_bannerclient'
        id column:'cid', type:'int'
        notes column:'extrainfo', type:'text'
        version false
    }
}

此时记录是在数据库中生成的,但是如果我使用failOnError:true保存域名,则会出现此错误:java.lang.IllegalArgumentException

我在映射checked_out TINYINT字段时遇到了问题。 GORM验证该字段的唯一方法是将其声明为Boolean,为什么它不能与Byte一起使用?

我对如何映射像TIME这样的MySQL checked_out_time字段也有一些疑问。

我还阅读了Hibernate文档的一些部分,但仍然没有获得完成此任务所需的知识!

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您正在指示"键入"但是应该指示" sqlType",这就是为什么我认为你遇到TINYINT问题并且必须使用布尔而不是字节。 Id默认情况下是一个int(实际上是bigint),但它不会抱怨你,除非你使用dbCreate ="验证"其他值是字符串,因此不一定会给你一个与笔记兼容的问题。

static mapping = {
    datasource 'joomla'
    table 'jos_bannerclient'
    id column:'cid', sqlType:'int'
    notes column:'extrainfo', sqlType:'text'
    version false
}

至于TIME问题,我已经能够指定类型TIMESTAMP没有问题,所以我可以想象TIME也可以正常工作。应支持所有SQL类型。例如:

static mapping = {
  dateCreated sqlType: 'TIMESTAMP', defaultValue: 'CURRENT_TIMESTAMP'
}