Rog*_*ger 4 java oracle hibernate h2
我正在为我们的oracle生产数据库配置一个h2测试数据库.所有表都是模式xxx
.我的数据源定义如下:
public DataSource dataSource() {
JdbcDataSource ds = new JdbcDataSource();
ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx;SCHEMA=xxx");
ds.setUser("xxx");
ds.setPassword("xxx");
return ds;
}
Run Code Online (Sandbox Code Playgroud)
有了SCHEMA=xxx
,我收到一个错误:Caused by: org.h2.jdbc.JdbcSQLException: Schema "xxx" not found; SQL statement: SET SCHEMA xxx [90079-186]
如果没有SCHEMA=xxx
,我会在Hibernate尝试使用连接运行查询时收到错误,因为它不会将模式添加到表名中.虽然它在我们的oracle数据库的生产中这样做.
编辑:为了提供更多的见解,我从生产中使用的创建脚本填充我的数据库:
@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
final DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(dataSource);
initializer.setDatabasePopulator(databasePopulator());
return initializer;
}
private DatabasePopulator databasePopulator() {
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.setSeparator(";");
populator.setCommentPrefix("--");
populator.addScript(new ClassPathResource("db-schema.sql"));
populator.addScript(new ClassPathResource("db-init-data.sql"));
return populator;
}
Run Code Online (Sandbox Code Playgroud)
此连接字符串有效: ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx\\;SET SCHEMA xxx");
归档时间: |
|
查看次数: |
12859 次 |
最近记录: |