【发布时间】:2017-06-11 22:03:25
【问题描述】:
我将 DataSource 定义为 bean:
@Bean(name="dataSource")
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setUrl("jdbc:h2:~/myDB");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
它工作得很好,但是我需要指定用于创建数据库的架构并在其上加载数据。有没有机会像 Spring Data 一样执行两个脚本(模式和数据脚本)?我发现的唯一东西是datasource.setSchema(),而且我担心我必须指定它的完整路径。如果我的架构脚本位于src/main/resources/ 路径中,那么如何指定它? (我确实做到了,documentation 怎么说,但它失败并显示一条消息)
出现意外错误(类型=内部服务器错误,状态=500)。 org.springframework.jdbc.CannotGetJdbcConnectionException:无法获得 JDBC 连接;嵌套异常是 org.h2.jdbc.JdbcSQLException: Schema "~/schema-h2.sql" not found [90079-193]
感谢您的建议
【问题讨论】:
-
你现在如何加载架构?
-
我无法在 atm 加载它,因为 spring 无法找到它在哪里。正如我之前所说的,
datasource.setSchema(String path);需要完整的 sql 路径。 -
你用“classpath:schema-h2.sql”试过了吗
-
看看这个答案:stackoverflow.com/a/27859849/280244,重点:
src/main/resources/成为类路径,所以文件src/main/resources/test.sql必须与classpath:test.xml一起加载
标签: java spring jdbc spring-jdbc