簡體   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