0
我在我的Spring Boot應用程序中使用Dynamic DataSource。在運行時彈出輸出模式DDL到數據庫
問題是我需要從我的實體生成表。沒有與
spring.jpa.hibernate.ddl-auto=update
的方式,但因爲我需要連接到數據庫在運行時它不會爲我工作。 我需要知道的是,我可以調用一些方法來執行與Spring在應用程序啓動時使用上述選項所做的相同的操作。
我在我的Spring Boot應用程序中使用Dynamic DataSource。在運行時彈出輸出模式DDL到數據庫
問題是我需要從我的實體生成表。沒有與
spring.jpa.hibernate.ddl-auto=update
的方式,但因爲我需要連接到數據庫在運行時它不會爲我工作。 我需要知道的是,我可以調用一些方法來執行與Spring在應用程序啓動時使用上述選項所做的相同的操作。
Okey經過一番研究,我找到了答案。您只需要詢問sessionFactoryBuilder爲您的數據庫生成更新腳本並執行比使用JdbcTemplate。
LocalSessionFactoryBuilder sessionFactory = new LocalSessionFactoryBuilder(dataSource);
sessionFactory.scanPackages("su");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
try{
List<SchemaUpdateScript> scripts = sessionFactory.generateSchemaUpdateScriptList(new PostgreSQL9Dialect(),
new DatabaseMetadata(dataSource.getConnection(), new PostgreSQL9Dialect(), sessionFactory));
log.info("Schema update scripts["+scripts.size()+"]");
for (SchemaUpdateScript script:scripts) {
log.info(script.getScript());
jdbcTemplate.execute(script.getScript());
}
}catch (Exception e){
log.error("error updating schema",e);
}
作爲記錄,該屬性只是要求Hibernate做它的事情,所以Spring Boot沒有做任何特殊的事情。 –