将现有的MySQL数据库与GORM进行映射

9

我正在尝试使用Grails 2.0中的GORM将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

我在映射TINYINT字段“checked_out”方面遇到了问题。 GORM唯一验证该字段的方法是将其声明为Boolean,为什么不适用于Byte

我还有一些疑问,如何映射MySQL的TIME字段,例如checked_out_time

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

有人可以提供帮助吗?


1
我已经在Grails社区论坛上开始了一个新的关于这个主题以及更多Joomla <-> Grails集成的讨论,网址为http://goo.gl/ARiug。 - gsscoder
2
你可能会发现这个插件很有用 http://www.grails.org/plugin/db-reverse-engineer - Dónal
你可以给我们更多关于原始数据表的信息吗?例如,你提到了“checked_out”和“checked_out_time”。 - mathifonseca
1个回答

2

您正在指定“type”,但应该指定“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
}

关于时间问题,我已经成功地指定了TIMESTAMP类型,所以我可以想象TIME也会正常工作。所有的SQL类型都应该被支持。例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接