是否可以在
之后的启动时运行自定义ddl脚本spring.jpa.hibernate.ddl-auto =创建
已经在数据库中创建了模型实体?
当前,我对模型做了很多更改,并希望在更改后删除所有内容,并通过以下方式创建测试数据:
@Bean
InitializingBean createTestEntries() {
return () -> {
testObject t1 = new testObject (values...);
testRepo.save(t1);
}
此后,我想创建一个数据库视图,但是我找不到使用Spring Boot 2 + Hibernate / JPA做到这一点的方法
我当然可以禁用ddl-auto并使用schema.sql和data.sql文件执行所有操作-但很高兴将我的模型更改自动填充到数据库中。
所以我想要一个混合模式。我的模型仍会自动填充-但是我以后可以调用自定义ddl代码来创建视图。
有人可以帮我吗?
答案 0 :(得分:1)
您可以将Springs JdbcTemplate注入到createTestEntries()方法中,并使用它执行自定义SQL创建视图:
@Bean
InitializingBean createTestEntries(@Autwired JdbcTemplate jdbc) {
return () -> {
testObject t1 = new testObject (values...);
testRepo.save(t1);
jdbc.update("custom SQL here")
}
根据您的需要,您也可以注入DataSource或EntityManager(使用本机查询)并使用它。
编辑:本机查询示例
@Bean
InitializingBean createTestEntries(@Autowired EntityManager em) {
return () -> {
Query q = em.createNativeQuery("custom sql");
q.executeUpdate()
}
}
有关更多详细信息,请参见JPA API Docs: