Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 无法从HSQL检索记录,数据库创建正在工作_Spring_Junit_Hsqldb - Fatal编程技术网

Spring 无法从HSQL检索记录,数据库创建正在工作

Spring 无法从HSQL检索记录,数据库创建正在工作,spring,junit,hsqldb,Spring,Junit,Hsqldb,我有一个应用程序在没有单元测试的情况下可以正常工作,但是,唉,这是正确的做法 我正在尝试为测试实现一个本地HSQL DB。我知道数据库已创建,脚本文件已运行,因为如果其中任何一个出现问题,我都会收到SQL错误。当我尝试运行测试时,我得到0个结果,我认为我输入了记录。同样,这些都是通过浏览器测试的,因此我将展示的服务代码工作正常。此外,这可能是一个糟糕的测试,但我不是来这里的 以下是测试: @Autowired OfficeService officeServiceImpl; @Test @Tr

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

我正在尝试为测试实现一个本地HSQL DB。我知道数据库已创建,脚本文件已运行,因为如果其中任何一个出现问题,我都会收到SQL错误。当我尝试运行测试时,我得到0个结果,我认为我输入了记录。同样,这些都是通过浏览器测试的,因此我将展示的
服务
代码工作正常。此外,这可能是一个糟糕的测试,但我不是来这里的

以下是测试:

@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);