我正在尝试使用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文档的一些部分,但仍然没有获得完成此任务所需的知识!
任何人都可以帮忙吗?
答案 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'
}