У меня есть сущность, которая сопоставляется с представлением SQL. У меня также есть настроенный для него репозиторий java-данных весны. Когда приложение работает, все работает нормально. Однако проблема начинается, когда я пытаюсь запустить мои тесты, в которых используется база данных H2 в памяти. Я подозреваю, что причина этого в том, что представление отсутствует, когда начинается H2, и, вероятно, рассматривается как независимый объект, и, следовательно, Spring boot настраивает его как независимую таблицу в памяти.Как инициализировать представление во H2
Конфигурация базы данных H2 как ниже -
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}
Я пытался поставить определение представления в файле schema.sql
в папке тест ресурсов -
CREATE VIEW
my_view
AS
SELECT
column_1,
column_2
FROM
m
INNER JOIN
mu
ON
m.id = mu.m_id
INNER JOIN
u
ON
mu.id = u.mu_id
Однако, это не поможет или. Таким образом, всякий раз, когда я называю настроенное хранилище JPA в моих тестах -
public interface MyViewRepository extends JpaRepository<MyView, Long> {}
как это -
myViewRepository.findAll()
возвращает пустой список, даже если я создаю все m
, mu
и u
объекты в моих тестах используя соответствующие репозитории перед этим поиском.
Как настроить H2 так, чтобы он определял мое определение?
Ну, я хотел более чистого решения, чем это. Было бы здорово, если бы каким-то образом я мог заставить H2 распознать мое сопоставление просмотров, но кажется, что отображение объекта для просмотра не работает :(... ну, я думаю, преимущество этого представления перевешивает этот простой недостаток. Спасибо за ваш ответ! –