Java / Hibernate + HSQLDB java.sql.BatchUpdateException:数据异常:字符串数据,右截断

时间:2014-01-28 15:59:34

标签: java sql hibernate hsqldb

我正在使用基于内存的HSQLDB在本地测试应用程序。 到目前为止一切都很顺利,但是,当执行一个字符串大于256个字符的测试用例时,我遇到了错误。

Caused by: java.sql.BatchUpdateException: data exception: string data, right truncation;  table: TABLENAME column: COLNAME
at org.hsqldb.jdbc.JDBCPreparedStatement.executeBatch(Unknown Source)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 30 more

我收集到这个错误的原因通常是正在使用的数据类型的“溢出”。

困扰我的是我使用hbm.xml文件明确地将列定义为4000个字符。

<property name="translation" type="java.lang.String" length="4000">
     <column name="COLNAME" not-null="false" />
  </property> 

当我将测试字符串切割到256个字符或更少时,一切都会重新开始工作。 257+个字符并抛出错误。我真的没有看到发生这种情况的原因。为什么HSQLDB将此列定义为length =“256”,当我明确声明它应该是4000 ...

有人可以帮忙吗?

祝你好运, daZza

1 个答案:

答案 0 :(得分:1)

好吧,无论出于何种原因,HSQLDB似乎都会对配置文件中指定的某些类型和值进行错误的映射,以映射到它创建的实际表。

我能够通过将“type”属性更改为type = text来解决此问题。现在一切都很完美。我只希望在我完成测试应用程序之后,它仍然可以使用原始的MSSQL DB并将文本映射到varchar然后......