我正在尝试在我的grails项目中存储jscience物理量。我使用的是hibernate和defaults,但我更喜欢通用的。我特别关注质量,如果可以的话,我只想在域对象中做一行,如下所示:
MyDomainClass {
Amount<Mass> weight
}但这会给出这个错误:
原因: org.hibernate.exception.DataException:无法在权重插入: project.MyDomainClass位于$Proxy10.saveOrUpdate(未知源) ... 27更多原因: com.mysql.jdbc.MysqlDataTruncation:数据截断:对于位于com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)的com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)的com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3601)的第1行的列'weight‘,数据太长在com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)在com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)在com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)在com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)在com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333)在com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318)在org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) ...还有28个
我可以通过将其更改为
def weight这有什么错吗,或者有更好的方法?是否有任何数据库解决方案具有处理混合单元的优势?谷歌搜索这是如此令人沮丧,因为一切都是关于单元测试的。
发布于 2012-01-15 23:08:37
您只使用def weight隐藏了错误消息,这使得该字段成为非持久性的。因为它不是类型化的,所以Grails和Hibernate不知道如何持久化和忽略它。
我的猜测是它将对象存储为blob,对于默认大小来说太大了,但这可能不是您想要的。查看http://grails.org/doc/latest/guide/GORM.html#customHibernateTypes,了解如何在您的域类中映射它们。
Grails文档中指向Hibernate文档的链接断开了-正确的url是http://docs.jboss.org/hibernate/stable/core/manual/en-US/html/mapping.html#mapping-types-custom
jScience可能已经有了自定义的Hibernate类型(无论是在发行版中还是来自第三方)-你应该查看他们的文档。
https://stackoverflow.com/questions/8868754
复制相似问题