org.hsqldb.jdbc.JDBCUtil.sqlException:数据异常:字符串数据,右截断;表:

时间:2017-04-13 20:13:34

标签: hibernate hsqldb

我从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的字符。

1 个答案:

答案 0 :(得分:0)

2.x中有些内容发生了变化,正如fredt所说here

尝试使用1或0而不是truefalse

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

在旧版本的Hsqldb中,您可以传递&#39; 0&#39; (字符串)并正常工作。但在最新版本中,您需要传递 0 (原始数字)。也许你传递&#39; true&#39; (字符串)而不是 true (原始布尔值)。