我从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表的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的字符。
答案 0 :(得分:0)
2.x中有些内容发生了变化,正如fredt所说here。
尝试使用1或0而不是true
和false
。
我不熟悉您填写测试的方式(使用XML),但请确保您没有将String传递给布尔列。
在旧版本的Hsqldb中,您可以传递&#39; 0&#39; (字符串)并正常工作。但在最新版本中,您需要传递 0 (原始数字)。也许你传递&#39; true&#39; (字符串)而不是 true (原始布尔值)。