找不到H2架构中的Sql Server实体

时间:2017-07-20 16:57:02

标签: sql-server hibernate spring-data h2

已经编写了使用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中的某些内容吗?

提前致谢。

1 个答案:

答案 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