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

Grails org.h2.jdbc.JdbcSQLException Value too long for column

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

org.h2.jdbc.JdbcSQLException

留言:

列 "KEYWORDS BINARY(255)" 的值太长:"X'aced0005737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647870... (1871)"; SQL 语句:插入用户 (id, version, email, face_url, keywords, name, phone, tags, terminals, url, weibo_id, weibo_name) 值 (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-176]

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

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

我也尝试过 "maxSize:10000"、"type:'text'" 以及这两者的组合。但是 none 成功了,错误完全一样。 "keyword" 属性只是 key=String,value=Double 的 HashMap。

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

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

如有任何建议,我们将不胜感激!

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

static mapping = {
    keywords sqlType:'text'
}

希望这对您有所帮助。谢谢