Grails org.h2.jdbc.JdbcSQLException列的值太长

时间:2015-10-29 12:37:36

标签: hibernate grails h2

我是Grails的新手,并不熟悉GORM如何将列映射到jdbc实现。 基本上我有以下错误:

org.h2.jdbc.JdbcSQLException

消息:

列值太长"关键词二进制(255)":" X' aced0005737200116a6176612e7574696c2e6086173684d61700507dac1c31660d103000246000a6c61664466163746f724900097468726573686f6c647870 ...(1871)&#34 ;; SQL语句:插入用户(id,version,email,face_url,keywords,names,phone,tags,terminal,url,weibo_id,weibo_name)值(null,?,?,?,?,?,?,?,? ,?,?,?)[22001-176]

我尝试了几种方法来改变这个KEYWORD属性的保存方式,例如

static constraints = {
    ...
    keywords(type:'serializable')
}

我还试过" maxSize:10000","输入:' text'",以及这两者的组合。但没有成功,错误完全相同。 "关键字" attribute只是key = String的HashMap,value = Double。

一般来说,我不确定让Grails(Hibernate)存储一个hashmap的最佳做法是什么。我相信必须有一个简单的设置,而不是自己为hibernate或grails实现用户定义的持久性方式。我想知道为什么每次它似乎都被转换为二进制(我重新运行应用程序让数据库丢弃并创建所有表)。

更多细节,我的控制器只是脚手架。 Grails版本是2.4.4。 H2db用于开发环境。

感谢任何建议!

1 个答案:

答案 0 :(得分:1)

我猜你一直在静态闭包中定义关键字,这是错误的,你应该把它写在像这样的静态映射中

$ docker run -it --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts
172.17.0.22     09d03f76bf2c
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
86.75.30.9      db-static
希望这会有所帮助。感谢