2012-11-08 3 views
6

스프링 데이터를 사용하여 엔티티의 특정 필드 만 선택하는 방법에 대한 정보를 찾으려고합니다 (JPA 사용). 엔티티의 특정 정보 만 선택하려고 할 때 저장소 인터페이스는 전체 엔티티의 정보를 반환하는 방법을 제공합니다! 어떤 때는 엔티티의 2 개 또는 3 개의 필드 만 필요하고 20, 30 개를 반환하는 경우가 있습니다 ... 100 개 필드는 조금 과장 될 수 있습니다.스프링 데이터의 필드 선택

이러한 종류의 기능은 Hibernate Criteria Projections 또는 JPA "SELECT NEW ...."쿼리를 사용하여 수행 할 수있는 기능입니다. 스프링 데이터로 가능한지 모르겠다.

감사합니다.

+0

같은 쿼리를 작성할 아직 불가능하다는 것 또한 수 있다고 생각합니다. 문제 추적기를 확인해 보니 발견했습니다. [DATAJPA-51] (https://jira.springsource.org/browse/DATAJPA-51). – yagamipaul

+0

쿼리를 작성하고'@ Query' 주석으로 채운 다음 코드를 실행하십시오. 여전히 작동해야합니다 ... –

답변

3

당신이 할 수있는 것은 List<Object[]>을 저장소에서 반송하는 것입니다. 그런 다음 서비스 클래스에서이 목록을 반복하고 필요한 객체를 수동으로 만듭니다. 샘플 저장소 방법

@Query("select el.moduleId, el.threadId from ExceptionLog el") 
public List<Object[]> tempQuery(); 
2

나는이 방법

SomeDataPOJO{ 
    required col1 
    required col2 
} 

에서 할 다음이

@Query("select new SomeDataPOJO from requiredTable where xyz="abc") 
public List<SomeDataPoJO> tempQuery()