我在Spring Boot应用程序中使用Dynamic DataSource 。
问题是我需要从我的实体生成表。
有一种方法 spring.jpa.hibernate.ddl-auto=update
但它对我不起作用,因为我需要在运行时连接到数据库。 我需要知道的是,我可以调用一些方法来执行与Spring在应用程序启动时所做的相同的事情,并提及选项。
答案 0 :(得分:1)
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);
}