Как запустить собственный ddl-скрипт при запуске Spring Boot 2 - PullRequest
0 голосов
/ 20 мая 2019

Можно ли запустить собственный сценарий ddl при запуске после

spring.jpa.hibernate.ddl-auto = create

создал модели объектов в базе данных?

В настоящее время я делаю много изменений в моделях и хочу все отбросить после изменения и создать тестовые данные с помощью:

@Bean
InitializingBean createTestEntries() {
    return () -> {

        testObject t1 = new testObject (values...);
        testRepo.save(t1);
}

После этого я хочу создать представление базы данных, но не могу найти способ сделать это с помощью Spring Boot 2 + Hibernate / JPA

Конечно, я мог бы отключить ddl-auto и делать все с файлом schema.sql и data.sql - но очень удобно, что изменения в моей модели автоматически заносятся в базу данных.

Так что я бы хотел гибридный режим. Мои модели по-прежнему заполняются автоматически, но я могу впоследствии вызвать собственный код ddl для создания представлений.

Может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 20 мая 2019

вы можете добавить 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()
   }
}

Подробнее см. Документы API JPA :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...