SQL 뷰에 매핑 된 엔티티가 있습니다. 또한 spring data jpa 저장소를 구성했습니다. 응용 프로그램을 실행하면 모든 것이 정상적으로 작동합니다. 그러나 문제는 메모리 내 H2 데이터베이스를 사용하는 테스트를 실행하려고 할 때 시작됩니다. 이 이유는 H2가 시작될 때 뷰가 존재하지 않는다는 것, 그리고 아마도 독립적 인 엔티티로 취급되어 스프링 부트가 독립적 인 메모리 테이블로 구성된다는 것입니다. 내가 테스트 리소스 폴더에 schema.sql
파일에 뷰 정의를 퍼팅 시도H2에서 뷰를 초기화하는 방법
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}
- - 아래와 같은
H2 데이터베이스에 대한 구성은 그러나
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가 내 뷰 매핑을 인식하도록 할 수 있다면 좋았을 것입니다. 그러나 뷰에 엔티티 매핑이 작동하지 않는 것처럼 보입니다. (.... 오, 이런 관점의 이점은이 간단한 단점보다 중요합니다. 답변 주셔서 감사합니다! –