Java 弹簧&x2019;s嵌入式H2数据源和DB_在_退出时关闭_

Java 弹簧&x2019;s嵌入式H2数据源和DB_在_退出时关闭_,java,spring,h2,Java,Spring,H2,对于单元测试(如果需要,可以称之为集成测试),我在Spring配置中配置了一个嵌入式数据库,如下所示: <jdbc:embedded-database id="dataSource" type="H2"> <jdbc:script location="classpath:schema_h2.sql" /> </jdbc:embedded-database> 现在,异常中包含的提示通常是好的,但是如何将该属性添加到嵌入式数据源中呢?我必须扩展它,手动配

对于单元测试(如果需要,可以称之为集成测试),我在Spring配置中配置了一个嵌入式数据库,如下所示:

<jdbc:embedded-database id="dataSource" type="H2">
    <jdbc:script location="classpath:schema_h2.sql" />
</jdbc:embedded-database>

现在,异常中包含的提示通常是好的,但是如何将该属性添加到嵌入式数据源中呢?我必须扩展它,手动配置它才能添加这样的“高级”功能吗?

在JDBC url中指定参数

对于内存测试数据库,我建议您添加
DB\u CLOSE\u DELAY=-1
,如下所示:

jdbc:h2:mem:alm;MODE=Oracle;DB_CLOSE_DELAY=-1
要将JDBC连接url添加到嵌入式数据库,请将其更改为:

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:mem:test;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>

<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
    <jdbc:script location="classpath:schema_h2.sql" />
 </jdbc:initialize-database>

我遇到了与Michael Piefel相同的问题,并尝试实施Michail Nikolaev解释的解决方案。 但是它不起作用,不知怎的,SpringBatch,那么,元数据作业表在哪里呢。 因此,由于我的应用程序使用的
springjdbc
版本是3.0.5,并且增加
spring框架
dwr
冲突(我在我的应用程序中使用它),这是基于spring、
dwr
gmaps-api的
geo
本地化。 我下载了
SpringJDBC4.0.3
发行版,并从中获得了
H2EmbeddedDatabaseConfigurer.class
,默认情况下,该类在退出=FALSE时拥有
DB\u CLOSE\u,并将其替换为
SpringJDBC3.0.5
发行版上的版本,并将其部署到war文件中,它可以工作,关闭
VM
不会导致内存数据库关闭


如果像我这样的其他人无法实现其他解决方案,希望这个不寻常的解决方案能有所帮助。

我也有同样的问题,但那是因为我忘记在我的一个实体上添加注释@Entity。我添加它,它现在工作!
我希望这对某人有所帮助。

我在H2文档中找到了这么多。您没有说明如何将其添加到
中。只是想澄清一下,更新后的答案是,它不能与
嵌入式数据库一起使用?你需要使用一个数据源bean和
初始化数据库
?据我所知,url中的
mem
使h2嵌入。它类似于什么吗?这对我不起作用。
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:mem:test;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>

<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
    <jdbc:script location="classpath:schema_h2.sql" />
 </jdbc:initialize-database>