Разница между import.sql и данными - $ {платформа} .sql - PullRequest
0 голосов
/ 29 ноября 2018

Я следую документации:

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

... и пытаюсь создать несколько тривиальных интеграционных тестов.Я хотел бы заполнить БД при запуске с некоторыми общими данными.Но у меня есть «странное» поведение, которое я не понимаю с данными - файл $ {platform} .sql.

application.properties:

spring.jpa.database=H2
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create

spring.datasource.initialize=true
spring.datasource.initialization-mode=always
spring.datasource.platform=h2
spring.datasource.url = jdbc:h2:mem:
spring.datasource.driver-class-name = org.h2.Driver

Итак, у меня schema-h2.sql гдеЯ создаю свою схему;почему-то кажется, что hibernate не будет автоматически генерироваться.И у меня есть @RunWith(SpringRunner.class) @DataJpaTest @Transactional тест, который будет утверждать количество записей в таблице.Если таблица пуста, тест не пройден.Теперь что за странная часть (для меня):

  • Файл data-h2.sql обнаружен и выполнен.Откуда я это знаю?Если я сделаю опечатку в своем выражении sql, будет исключение времени выполнения.Так что это обрабатывается.Однако даже если этот оператор выполняется, таблица будет пустой в тесте.Зачем?Это не совершено или что-то?Я пытался добавить коммит;в файл, но это не помогло.Там не определены предварительные откаты или что-то еще.

    • Файл import.sql, с другой стороны, созданный путем переименования data-h2.sql, также выполняется, и данные доступны в таблице при выполнении теста.

Так в чем же разница в поведении при обработке этих двух файлов?Я хотел бы использовать функцию Springboot вместо Hibernate, но как правильно ее использовать?

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