Я использую JUnit 5 и хочу проверить свою бизнес-логику c, которая использует Spring Data JPA. Я получаю ошибки при запуске теста JPA.
У меня есть свойства:
jpa:
hibernate:
ddl-auto: validate
properties:
hibernate:
jdbc:
lob:
non_contextual_creation: true
show-sql: true
flyway:
validate-on-migrate: false
enabled: true
Миграция * Файл 1028 *:
CREATE SEQUENCE public.entity_id_sequence INCREMENT 1 START 1 MINVALUE 1;
CREATE TABLE IF NOT EXISTS movies
(
id BIGINT PRIMARY KEY,
title VARCHAR(30) UNIQUE NOT NULL
);
CREATE TABLE IF NOT EXISTS reservations
...
и мой класс теста:
@RunWith(SpringRunner.class)
@DataJpaTest
public class MovieEntityTest {
@Autowired
private MovieRepository movieRepository;
@Test
public void show_not_allow_null_title() {
Movie movie = new Movie();
movie.setTitle("My Title");
Movie inDB = movieRepository.save(movie);
assertThat(inDB.getTitle()).isNotNull();
}
}
Моя последняя часть stacktrace:
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "CREATE TABLE IF NOT EXISTS SCREENINGS
(
ID BIGINT PRIMARY KEY,
MOVIE_ID BIGINT REFERENCES MOVIES (ID) NOT NULL[*],
SCREENING_TIME TIMESTAMP NOT NULL,
ROOM_ID BIGINT REFERENCES SCREENING_ROOMS (ID) NOT NULL,
TICKET_PRICE NUMERIC(15, 2) NOT NULL
)"; expected "DEFERRABLE"; SQL statement:
CREATE TABLE IF NOT EXISTS screenings
(
id BIGINT PRIMARY KEY,
movie_id BIGINT REFERENCES movies (id) NOT NULL,
screening_time TIMESTAMP NOT NULL,
room_id BIGINT REFERENCES screening_rooms (id) NOT NULL,
ticket_price NUMERIC(15, 2) NOT NULL
) [42001-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:453)
...
Как я могу это исправить?
Я пытался:
- до установить flyway.enabled: false
- для обновления sh подключения к БД, пробовал ddl-auto: создать
- для создания другого профиля
test
в application.yml с собственными свойствами источника данных