Проблема генерации ddl в весеннем приложении данных jpa - PullRequest
0 голосов
/ 01 марта 2019

У нас есть работающее приложение Spring Boot (2.1.3).Для локальной разработки мы используем

  jpa:
     hibernate:
        ddl-auto: create-drop

Теперь нам нужно сгенерировать файл ddl для наших db-guys (предпочтительно во время сборки).Я попробовал установить следующие дополнительные свойства:

  javax:
    persistence:
      schema-generation:
        create-source: metadata
        action: create
        create-target: create.sql 

С этими настройками (ddl-auto изменен на none) я запустил свое приложение.Хотя все началось нормально, "create.ddl" не найдено.

Поскольку я хочу, чтобы файл ddl создавался во время сборки, я добавил тест:

@RunWith(SpringRunner.class)
@DataJpaTest
@TestPropertySource(locations = "classpath:/testproperties/ddlgenerate.yml")
@AutoConfigureTestDatabase(replace = Replace.NONE)
public class GenerateDDL {

    @Autowired
    private EntityManager em;

    @Test
    public void generateDDL(){
        em.close();
        em.getEntityManagerFactory().close();
    }

}

Я где-то читал, чтоddl должен быть сгенерирован во время создания EntityManager ?!Ссылочный classpath:/testproperties/ddlgenerate.yml содержит только

spring:
  jpa:
    properties:
      javax:
        persistence:
          schema-generation:
            create-source: metadata
            action: create
            create-target: create.sql

Журнал указывает, что свойства загружены.Тест зеленый, но все еще не файл ddl.

Итак, как получить файл ddl, сгенерированный (предпочтительно во время сборки)?

1 Ответ

0 голосов
/ 08 апреля 2019

Проблема в том, что @TestPropertySource не поддерживает файлы yaml в качестве источника.Все работает, как только yaml конвертируется в файл свойств.

...