无法从HSQL检索记录,数据库创建正在运行

时间:2014-02-27 16:41:33

标签: spring junit hsqldb

我有一个在没有单元测试的情况下正常运行的应用程序,但唉,这是正确的做法。

我正在尝试为测试实现本地HSQL DB。我知道db已经创建并运行了脚本文件,因为如果出现问题,我会收到SQL错误。当我尝试运行测试时,我得到0结果,我认为我输入了记录。同样,这都通过浏览器进行了测试,因此我将展示的Service代码正常运行。此外,这可能是一个糟糕的测试,但我不是为了这个。

以下是测试:

@Autowired
OfficeService officeServiceImpl;

@Test
@Transactional
public void thatRecordIsSaved() {
    List <Office> offices = officeServiceImpl.findAll();
    Office o = offices.get(0);
    o.setOfficeName("Test office");
    officeServiceImpl.save(o);
    List<Office> officesAfter = officeServiceImpl.findAll();
    Office lastLocation = officesAfter.get(officeServiceImpl.findAll().size() - 1);
    assertEquals("Test office", lastLocation.getOfficeName());
}

这是插入声明:

INSERT INTO office0_ (active_indicator, facility_code, office_code, office_name, head_count, lattitude, longitude, lert_indicator, country, addr1, addr2, addr3, city, state_or_province, postal_code, updated_at, created_at) 
VALUES(1, '1','1','xyz','2',1.11111,2.22222,0,'US','fake address', '', '', 'x', 'YZ', '12345', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

没有错误表明此记录未被添加,并且没有任何消息表明已添加该记录。任何想法在这里发生了什么?

1 个答案:

答案 0 :(得分:0)

当两个Java进程实际上访问两个不同的数据库时,通常会出现这种问题。

要避免此问题,请使用连接属性ifexists=true或备用属性create=false,以使依赖于数据库的连接预先存在。如果数据库尚不存在,连接尝试将失败。

file:数据库的URL理想情况下应该是绝对URL。相对URL是相对于Java进程的执行点,通常指向不同的绝对路径。