0

我正在构建一个 Spring/Hibernate/Postgres api,它工作正常。我想在内存中使用 H2 DB 编写集成测试。我知道如何创建 test-applicationContext。但是我在创建表格时遇到了一些问题。

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:mem:processdb;INIT=RUNSCRIPT FROM 'classpath:create.sql'" 
        />
</bean>

现在 create.sql 有一个 sql 查询来创建所需的模式和表。但是 Hiberate 应该处理它,我认为我不必使用查询来创建表,hibernate 应该从模型注释中处理它?我在我的 persistence.xml 中定义了所有内容,但最后它说找不到表“用户”。任何人都可以建议我如何在集成测试中创建表或指出我正确的方向吗?谢谢

4

1 回答 1

1

您缺少 jdbc 连接字符串上的 close_delay 标志。没有这个 H2 每次释放最后一个连接时都会关闭数据库。因此,架构丢失是您在创建后直接出现的情况。

jdbc:h2:mem:processdb;DB_CLOSE_DELAY=-1
于 2013-04-19T05:25:25.783 回答