0

我正在使用 hsqldb 作为数据库。我创建了 LmexPostParamDao,它有一个方法 insertLmexPostParam(NameValuePostParamVO nameValuePostParamVO),它将在数据库中插入数据。为了测试这种方法,我使用 JUnit 测试在 hsqldb 中插入一些数据。

我的 JUnit 测试方法如下:

    @Test
public void testInsertLmexPostParam(){
    String lmexPostParamId = UUID.randomUUID().toString();
    NameValuePostParamVO nameValuePostParamVO = new NameValuePostParamVO();
    nameValuePostParamVO.setLmexPostParamId(lmexPostParamId);
    nameValuePostParamVO.setParamName("adapter_id");
    nameValuePostParamVO.setParamValue("7");

    lmexPostParamDao.insertLmexPostParam(nameValuePostParamVO);
}

我的插入方法如下:

    @Override
public void insertLmexPostParam(NameValuePostParamVO nameValuePostParamVO) {
    String insertQuery = "insert into LMEX_POST_PARAM(lmex_post_param_id, param_name, param_value) values (?,?,?)";
    String[] paramArr = { nameValuePostParamVO.getLmexPostParamId(), nameValuePostParamVO.getParamName(), nameValuePostParamVO.getParamValue()};
    int update = adapterJdbcTemplate.update(insertQuery, paramArr);
    System.out.println(update);
}

当我运行我的测试用例时,它返回我 1 作为输出,这是 adapterJdbcTemplate 的结果。这意味着数据插入成功。但是当我看到我的数据库时,它没有向我显示插入的那一行。当我用相同的值调试我的测试用例方法时,它给出了一个异常:数据完整性违规异常。在这个异常之后,当我看到我的数据库时,它在我的数据库中显示了该行。会有什么问题。我不。当我看到代码时,看起来一切都很好。帮我解决这个问题。

谢谢

4

1 回答 1

0

检查 LMEX_POST_PARAM 的 CREATE TABLE 语句。CHAR 和 VARCHAR 类型必须定义为 CHAR(N) 和 VARCHAR(N),其中 N 大到足以接受您插入的值。例如,VARCHAR(100)。

If your problem is the database is not showing the successful insert, then you should create your database with WRITE_DELAY = 0 or false. See the HSQLDB documentation for the version you are using.

于 2011-03-09T12:11:09.070 回答