我正在使用基于内存的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
答案 0 :(得分:1)
好吧,无论出于何种原因,HSQLDB似乎都会对配置文件中指定的某些类型和值进行错误的映射,以映射到它创建的实际表。
我能够通过将“type”属性更改为type = text来解决此问题。现在一切都很完美。我只希望在我完成测试应用程序之后,它仍然可以使用原始的MSSQL DB并将文本映射到varchar然后......