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

gss*_*der 9 mysql joomla grails map grails-orm

我正在尝试使用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
    }
}
Run Code Online (Sandbox Code Playgroud)

此时记录是在数据库中生成的,但如果我保存域,failOnError:true我会收到此错误:java.lang.IllegalArgumentException.

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

我对如何映射MySQL TIME字段也有一些疑问checked_out_time.

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

有人可以帮忙吗?

th3*_*org 2

您指示“类型”,但应该指示“sqlType”,这就是为什么我相信您遇到 TINYINT 问题并且必须使用布尔值而不是字节的原因。默认情况下,Id 是一个 int (实际上是 bigint),但它不会向您抱怨,除非您使用 dbCreate = "validate" 并且其他值是字符串,因此不一定会给您带来兼容性问题笔记。

static mapping = {
    datasource 'joomla'
    table 'jos_bannerclient'
    id column:'cid', sqlType:'int'
    notes column:'extrainfo', sqlType:'text'
    version false
}
Run Code Online (Sandbox Code Playgroud)

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

static mapping = {
  dateCreated sqlType: 'TIMESTAMP', defaultValue: 'CURRENT_TIMESTAMP'
}
Run Code Online (Sandbox Code Playgroud)