"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Spring 데이터 JPA GROUP BY 쿼리에서 사용자 정의 개체를 반환하는 방법은 무엇입니까?

Spring 데이터 JPA GROUP BY 쿼리에서 사용자 정의 개체를 반환하는 방법은 무엇입니까?

2024년 12월 22일에 게시됨
검색:269

How to Return Custom Objects from Spring Data JPA GROUP BY Queries?

Spring 데이터 JPA GROUP BY 쿼리의 사용자 정의 객체 반환

소개


검색 Spring Data JPA GROUP BY 쿼리의 사용자 정의 객체로서의 데이터는 데이터 표현을 향상시키고 추가 처리를 단순화합니다. 이 가이드에서는 이를 달성하는 방법을 탐색하고 JPQL 및 기본 쿼리에 대한 솔루션을 보여줍니다.

JPQL 쿼리


JPA 사양 내의 JPQL 쿼리는 기본 쿼리를 제공합니다. 사용자 정의 객체 반환을 지원합니다.

1단계: 사용자 정의 Bean 생성


원하는 출력 구조를 나타내는 간단한 Bean 클래스:

public class SurveyAnswerStatistics {
  private String answer;
  private Long cnt;

  // Constructor
}

2단계: Bean 인스턴스 반환


사용자 정의 Bean의 인스턴스를 반환하도록 저장소 메서드 업데이트:

public interface SurveyRepository extends CrudRepository {
    @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
    List findSurveyCount();
}

네이티브 쿼리


네이티브 쿼리에는 새 키워드에 대한 직접적인 지원이 부족하지만 Spring Data Projection 인터페이스는 대체 솔루션을 제공합니다:

1단계: 프로젝션 인터페이스 정의


원하는 속성에 해당하는 프로젝션 인터페이스를 만듭니다. 출력:

public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}

2단계: 프로젝션된 속성 반환


프로젝션된 속성을 반환하도록 저장소 메서드 업데이트:

public interface SurveyRepository extends CrudRepository {
    @Query(nativeQuery = true, value =
            "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
    List findSurveyCount();
}

SQL AS 키워드를 사용하여 결과 필드를 프로젝션 속성에 원활하게 매핑합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3