Spring 无法从HSQL检索记录,数据库创建正在工作
我有一个应用程序在没有单元测试的情况下可以正常工作,但是,唉,这是正确的做法 我正在尝试为测试实现一个本地HSQL DB。我知道数据库已创建,脚本文件已运行,因为如果其中任何一个出现问题,我都会收到SQL错误。当我尝试运行测试时,我得到0个结果,我认为我输入了记录。同样,这些都是通过浏览器测试的,因此我将展示的Spring 无法从HSQL检索记录,数据库创建正在工作,spring,junit,hsqldb,Spring,Junit,Hsqldb,我有一个应用程序在没有单元测试的情况下可以正常工作,但是,唉,这是正确的做法 我正在尝试为测试实现一个本地HSQL DB。我知道数据库已创建,脚本文件已运行,因为如果其中任何一个出现问题,我都会收到SQL错误。当我尝试运行测试时,我得到0个结果,我认为我输入了记录。同样,这些都是通过浏览器测试的,因此我将展示的服务代码工作正常。此外,这可能是一个糟糕的测试,但我不是来这里的 以下是测试: @Autowired OfficeService officeServiceImpl; @Test @Tr
服务代码工作正常。此外,这可能是一个糟糕的测试,但我不是来这里的
以下是测试:
@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());
}
没有错误表明未添加此记录,也没有消息表明已为此添加此记录。知道这里发生了什么吗?当两个Java进程实际上正在访问两个不同的数据库时,通常会出现这种问题
要避免此问题,请对依赖于数据库的连接使用连接属性ifexists=true
,或替代属性create=false
。如果数据库不存在,连接尝试将失败
文件:
数据库的URL最好是绝对URL。相对URL相对于Java进程的执行点,通常指向不同的绝对路径
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);