繁体   English   中英

如何在Spring Boot 2启动时运行自定义ddl脚本

[英]How to run a custom ddl script on startup of Spring Boot 2

是否可以在启动后在启动时运行自定义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文件执行所有操作-但很高兴将我的模型更改自动填充到db中。

所以我想要一个混合模式。 我的模型仍会自动填充-但之后我可以调用自定义ddl代码来创建视图。

有人可以帮我吗?

您可以将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文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM