org.hsqldb.jdbc.JDBCUtil.sqlException: data exception: strin



我从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 而不是truefalse

我不熟悉您填写测试(使用 XML)的方式,但请确保您没有将字符串传递给布尔列。

在旧版本的 Hsqldb 中,您可以传递"0">(字符串)并工作。但在最新版本中,您需要传递0(基元数)。也许您传递的是"true">(字符串)而不是true(原始布尔值)。

最新更新