2
我正在使用基於內存的HSQLDB在本地測試應用程序。 到目前爲止,一切都很順利,但是,當執行一個字符串大於256個字符的測試用例時,我遇到了一個錯誤。Java/Hibernate + HSQLDB java.sql.BatchUpdateException:數據異常:字符串數據,右截截
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
你如何重新創建數據庫?你是否在hibernate配置中指定SQL方言? – WeMakeSoftware
當然,我用下面的HSQLDB: hibernate.dialect =組織: hibernate.dialect = org.hibernate.dialect.HSQLDialect hibernate.hbm2ddl.auto =爲真正的數據庫中創建 這。 hibernate.dialect.SQLServerDialect hibernate.hbm2ddl.auto = validate 數據庫結構的重新創建完美。所有的表格,欄目,約束條件等都在那裏並且完全正常運作。唯一的問題似乎是長度「256」thingy ... – daZza
你檢查過數據庫中列的定義嗎?另外:添加到你自己的問題應該被編輯進來,而不是作爲評論。 –