Вот спецификация источника данных в application.properties
spring.dw.datasource.jdbc-url=jdbc:h2:tcp://localhost/file:~/developer/myprojects;schema=DW;FILE_LOCK=SOCKET;MVCC=true
spring.dw.datasource.driver-class-name=org.h2.Driver
spring.dw.datasource.username=me
spring.dw.datasource.password=p
spring.dw.datasource.platform=h2
В моей конфигурации я делаю:
@Configuration
public class DatasourceConfiguration {
//...
@Bean
@ConfigurationProperties(prefix="spring.dw.database")
public DataSource dwDatasource(){
return DataSourceBuilder.create().build();
}
В одном из моих сервисных методов я делаю:
@Autowired
public DataSource dwDatasource;
public void run() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dwDatasource);
jdbcTemplate.update("INSERT INTO SAMPLETABLE1 (STRING1, STRING2) VALUES ('TEST4', 'TEST2')");
System.out.println("<<run()");
}
Я получаю:
StatementCallback; bad SQL grammar [INSERT INTO SAMPLETABLE1 (STRING1, STRING2) VALUES ('TEST4', 'TEST2')]; nested exception is org.h2.jdbc.JdbcSQLException: Table "SAMPLETABLE1" not found; SQL statement:
Однако, если я это сделаю:
public void run() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dwDatasource);
jdbcTemplate.update("INSERT INTO DW.SAMPLETABLE1 (STRING1, STRING2) VALUES ('TEST4', 'TEST2')");
System.out.println("<<run()");
}
Все работы.
Итак, вопрос, почему я должен указывать схему