Java 弹簧&x2019;s嵌入式H2数据源和DB_在_退出时关闭_
对于单元测试(如果需要,可以称之为集成测试),我在Spring配置中配置了一个嵌入式数据库,如下所示: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> 现在,异常中包含的提示通常是好的,但是如何将该属性添加到嵌入式数据源中呢?我必须扩展它,手动配
<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>