Hibernate org.hsqldb.jdbc.jdbcuti.sqlException:数据异常:字符串数据,右截断;表:
我从HSQLDB1.8.0迁移到2.3.4。 运行BDUnit之后:beforeTestMethodHibernate org.hsqldb.jdbc.jdbcuti.sqlException:数据异常:字符串数据,右截断;表:,hibernate,hsqldb,Hibernate,Hsqldb,我从HSQLDB1.8.0迁移到2.3.4。 运行BDUnit之后:beforeTestMethod @BeforeMethod(groups = "integration-hibernate") public void beforeTestMethod() throws Exception { System.out.println("beforeTestMethod"); prepareSettings(); for (DatabaseOperation op : be
@BeforeMethod(groups = "integration-hibernate")
public void beforeTestMethod() throws Exception {
System.out.println("beforeTestMethod");
prepareSettings();
for (DatabaseOperation op : beforeTestOperations) {
op.execute(getConnection(), dataSet);
}
}
我得到:
data exception: string data, right truncation; table: BID column: IS_SUCCESSFUL
org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.execute(Unknown Source)
BID表的Hibernate映射:
<property name="successful"
column="IS_SUCCESSFUL"
type="true_false"
not-null="true"/>
要填充表以进行测试的数据集:
<BID
BID_ID ="1"
BID_AMOUNT ="100"
BID_AMOUNT_CURRENCY ="USD"
IS_SUCCESSFUL ="false"
ITEM_ID ="1"
BIDDER_ID ="1"
BID_POSITION ="0"
CREATED ="2006-09-23 13:46:00"
/>
<BID
BID_ID ="2"
BID_AMOUNT ="124"
BID_AMOUNT_CURRENCY ="USD"
IS_SUCCESSFUL ="true"
ITEM_ID ="1"
BIDDER_ID ="1"
BID_POSITION ="1"
CREATED ="2006-09-23 13:47:00"
/>
新HSQLdb版本中的布尔类型是否已更改?在数据库中,字段是一个长度为1的字符。正如fredt所说,在2.x中有些东西发生了变化 尝试使用1或0,而不是
true
和false
我不熟悉(使用XML)填充测试的方式,但请确保没有向布尔列传递字符串
在旧版本的Hsqldb中,可以传递'0'(字符串)并工作。但在最新版本中,您需要传递0(原语编号)。也许你传递的是'true'(字符串)而不是true(原始布尔值)。正如fredt所说,在2.x中有些东西发生了变化 尝试使用1或0,而不是
true
和false
我不熟悉(使用XML)填充测试的方式,但请确保没有向布尔列传递字符串
在旧版本的Hsqldb中,可以传递'0'(字符串)并工作。但在最新版本中,您需要传递0(原语编号)。可能传递的是'true'(字符串),而不是true(基本布尔值)