Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Hibernate+;HSQLDB java.sql.BatchUpdateException:数据异常:字符串数据,右截断_Java_Sql_Hibernate_Hsqldb - Fatal编程技术网

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

Java/Hibernate+;HSQLDB java.sql.BatchUpdateException:数据异常:字符串数据,右截断,java,sql,hibernate,hsqldb,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.executeBatc

我正在使用基于内存的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

不管出于什么原因,HSQLDB似乎无法将配置文件中指定的某些类型和值映射到它创建的实际表


我可以通过将“type”属性更改为type=text来解决这个问题。现在一切都很好。我只是希望在我完成应用程序测试后,它仍然可以与原始MSSQL DB一起工作,并将文本映射到varchar,然后

如何重新创建数据库??您是否在hibernate配置中指定SQL方言?当然,我对HSQLDB使用以下命令:hibernate.dialen=org.hibernate.dialen.hsqldalyte hibernate.hbm2ddl.auto=create,对真实数据库使用以下命令:hibernate.dialen=org.hibernate.dialen.sqlserverdialen hibernate.hbm2ddl.auto=validate数据库结构的重新创建工作正常。所有的表、列、约束等都在那里并且功能齐全。唯一的问题似乎是长度“256”之类的…您检查过数据库中列的定义了吗?另外:您自己问题的补充内容应在中编辑,而不是作为评论。