gpt4 book ai didi

database - 跨多个模式的 h2 数据库单元测试

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:21 27 4
gpt4 key购买 nike

我正在尝试将单元测试与 h2 数据库一起使用。我的应用程序使用 MSSQL 数据库。下面是我的应用程序中使用的 2 个表:

SchemaA.dbo.Table1<br>
SchemaB.dbo.table2<br>

@Entity<br>
@Table(name="SchemaB..table")<br>
Class A <br>
{

private Long id;

............

}

我正在尝试编写单元测试来测试上述类的持久性。但是 h2 数据库不识别这个表名语法:

SchemaB..table

注意:架构名称和表名称之间的 2 个点。

如有任何建议,我们将不胜感激。

最佳答案

您可能想要使用 Table JPA 注释的架构属性。例如:

@Entity(name = "Foo")
@Table(name = "TABLE_FOO", schema = "bar")

如果您有一个数据源,它通过用户 A 连接到您的 h2。为了访问架构“bar”,您可能希望告诉 h2 在连接时自动创建架构“bar”。

jdbc:h2:mem:play;MODE=MySQL;INIT=RUNSCRIPT FROM 'test/init.sql'

JDBC URL test/init.sql 的最后一部分指向一个包含以下内容的 sql 文件。

CREATE SCHEMA IF NOT EXISTS bar

H2 将执行 sql 并在连接时创建模式。


我在 github 创建了一个演示项目.

该项目有一个 init.sql 文件,它创建了 2 个模式,foo 和 bar。

2 个模型类 foo.A 和 bar.B,它们使用 @Entity(schema="foo", name="A") 相应地指定模式。查看应用程序/模型。

测试用例使用play框架,因此每次执行测试用例时都可以应用内置的进化工具。但是在执行测试用例之前使用setUp方法应用自己的sql脚本应该没问题。请查看示例测试用例的测试文件夹。 (实际上是scalaTest,但是和junit的思路基本一样)

关于database - 跨多个模式的 h2 数据库单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com