[SPRING] 스프링 데이터 REST 투영 뒤에서 생성 된 SQL 쿼리 수정
SPRING스프링 데이터 REST 투영 뒤에서 생성 된 SQL 쿼리 수정
편집하다 : 스프링 데이터 레스트 투영을 위해 SELECT에 필요한 열만 유지하는 방법?
Spring Data Rest 프로젝션은 생성 된 링크에 대해 열의 하위 집합을 가져 오는 데 적합하지만 뒤에 생성되는 Query에는 여전히 모든 열이 있습니다.
프로젝션은 SQL 쿼리가 SELECT에있는 Projection에있는 컬럼만을 가지고있는 곳에서 어떻게 생성 될 수 있습니까?
해결법
-
==============================
1.왜 문서에서 빠졌는지 모르겠지만 이번 봄 샘플 (봄부터)에서는 @Query의 반환 유형으로 프로젝션을 사용할 수 있음을 보여줍니다. 그래서 당신은 할 수 있습니다 :
왜 문서에서 빠졌는지 모르겠지만 이번 봄 샘플 (봄부터)에서는 @Query의 반환 유형으로 프로젝션을 사용할 수 있음을 보여줍니다. 그래서 당신은 할 수 있습니다 :
public interface ActionId { String getId(); } @Query("select a.id as id from Action a where a.type = :type") public List<ActionId> findByType(@Param("type") String type);
이제 생성자 표현식을 사용하지 않고 원하는 컬럼을 더 간결하게 선택하고 객체를 반환 할 수 있습니다. 투영을 도메인 객체 자체에 적용하면 id 필드만으로도 여전히 "액션"을 반환 할 수 있지만 그럴 가능성은 없습니다.
ref : https : //github.com/spring-projects/spring-data-examples/blob/master/jpa/example/src/main/java/example/springdata/jpa/projections/CustomerRepository.java
-
==============================
2.나는 당신이 "중첩 된 투영법"을 사용할 수 있다고 생각합니다.
나는 당신이 "중첩 된 투영법"을 사용할 수 있다고 생각합니다.
예 : 자원 A는 필드 boo와 자원 B를 포함하며, 필드 foo, bar, zed가 있습니다.
원하는 필드 만 나열하는 B 용 투영을 작성해야합니다.
@Projection(name="reduced", types = B.class) public interface BReduced { String foo; //exclude bar, for instance int zed; }
그런 다음 A의 투영법에서 그 투영법을 사용합니다.
@Projection(name="reduced", types = A.class) public interface AReduced { int bubi; BReduced b; }
잘 이해했거나 SQL 쿼리에서 성능에 대해 이야기하고 있습니까?
from https://stackoverflow.com/questions/26524529/modify-sql-query-generated-behind-spring-data-rest-projections by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC, 하나의 설정 대신 두 개의 설정 인스턴스 (0) | 2019.03.17 |
---|---|
[SPRING] Spring 3 / Spring Security 2.0.5에서 세션 시간 초과 감지 (0) | 2019.03.17 |
[SPRING] AD 그룹을 사용자 역할 스프링 보안 LDAP에 매핑하는 방법 (0) | 2019.03.17 |
[SPRING] 확장 스프링 양식 태그 라이브러리 속성 (0) | 2019.03.17 |
[SPRING] 안드로이드에서 스프링과 같은 패키지 스캐닝 구현하기 (0) | 2019.03.17 |