我从HSQLDB 1.8.0迁移到2.3.4。 运行 BDUnit:beforeTestMethod 之后
@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 表的休眠映射:
<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 的字符。
正如弗雷特在这里所说,在 2.x 中发生了一些变化。
尝试使用 1 或 0 而不是true
和false
。
我不熟悉您填写测试(使用 XML)的方式,但请确保您没有将字符串传递给布尔列。
在旧版本的 Hsqldb 中,您可以传递"0">(字符串)并工作。但在最新版本中,您需要传递0(基元数)。也许您传递的是"true">(字符串)而不是true(原始布尔值)。