已经编写了使用Sql Server并且工作的测试,但是我回过头来尝试使用H2来加快速度。实体是这样的:
@Entity
@Table(name="Rules"
,schema="dbo"
,catalog="ABM"
)
public class Rules {
....
}
这是我为Sql Server进行逆向工程而生成的,我打算用H2对该实体进行测试。 但是我明白了:
Caused by: org.h2.jdbc.JdbcSQLException: Schema "ABM" not found; SQL statement:
将show sql设置为true我看到:
... from abm.dbo.rules ....
H2一定不知道' abm'是。考虑创建模式我将URL更新为:
spring.datasource.url=jdbc:h2:mem:ABM;INIT=CREATE SCHEMA ABM;AUTO_SERVER=TRUE;USE SCHEMA ABM
仍有同样的问题。我可以使用为Sql Server创建的实体,并将目录设置为H2中的某些内容吗?
提前致谢。
答案 0 :(得分:0)
我如何解决这个问题,即实体有目录和架构,对于H2,实际上并没有目录的概念。目录基本上只是数据库,您可以创建模式,所以我这样做:
@Primary
@Bean(name = "h2soruce")
public DataSource dataSource() {
EmbeddedDatabase build = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).setName("ABM").addScript("init.sql").build();
return build;
}
并且在资源init.sql下有这个
CREATE SCHEMA IF NOT EXISTS dbo;
在github上发现:demo-spring-data-jpa-hibernate-h2