Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring hsqldb在使用JUnit测试运行时未显示插入查询的反射_Spring_Junit_Hsqldb_Jdbctemplate - Fatal编程技术网

Spring hsqldb在使用JUnit测试运行时未显示插入查询的反射

Spring hsqldb在使用JUnit测试运行时未显示插入查询的反射,spring,junit,hsqldb,jdbctemplate,Spring,Junit,Hsqldb,Jdbctemplate,我使用hsqldb作为数据库。我创建了LmexPostParamDao,它有一个insertLmexPostParam(NameValuePostParamVO NameValuePostParamVO)方法,该方法将在数据库中插入数据。为了测试这个方法,我使用JUnitTest在hsqldb中插入了一些数据 我的JUnit测试方法如下: @Test public void testInsertLmexPostParam(){ String lmexPostParamId = U

我使用hsqldb作为数据库。我创建了LmexPostParamDao,它有一个insertLmexPostParam(NameValuePostParamVO NameValuePostParamVO)方法,该方法将在数据库中插入数据。为了测试这个方法,我使用JUnitTest在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);
}
我的插入方法如下:

    @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的结果返回给我。这意味着数据插入成功。但当我看到我的数据库时,它并没有显示插入的那一行。当我用相同的值调试我的testcase方法时,它会给出一个异常:数据完整性冲突异常。在这个异常之后,当我看到我的数据库时,它会显示数据库中的那一行。问题是什么。我没有。当我看到代码时,看起来一切都很好。帮我解决这个问题


谢谢

检查LMEX\u POST\u参数的CREATE TABLE语句。CHAR和VARCHAR类型必须定义为CHAR(N)和VARCHAR(N),N的大小必须足以接受插入的值。例如,VARCHAR(100)


如果您的问题是数据库未显示成功插入,则应使用WRITE_DELAY=0或false创建数据库。请参阅您正在使用的版本的HSQLDB文档。

我已经给出了一个可以保存UUID值的大小varchar(40)。我使用java UUID.random().toString()函数生成了主键。我不认为这是一个大小的问题。因为正如我在问题中所说的,当我使用相同的值进行调试时,相同的方法会给我一个异常完整性冲突异常。在异常之后,当我为同一条记录运行get方法时,它会返回一个值。所以,还有其他建议吗?谢谢,弗雷德,这很有效。现在,我在hsqldb databasemanagerswing工具的帮助下设置了这个属性。但是您能告诉我如何在spring-config.xml中设置相同的属性吗