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

Hibernate 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

我从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 : 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(基本布尔值)