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

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

Susan Sarandon
Susan Sarandon원래의
2024-11-02 06:16:02624검색

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

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

소개


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

JPQL 쿼리


JPA 내의 JPQL 쿼리 사양은 사용자 정의 개체 반환에 대한 기본 지원을 제공합니다.

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


원하는 출력 구조:

<code class="java">public class SurveyAnswerStatistics {
  private String answer;
  private Long cnt;

  // Constructor
}</code>

2단계: Bean 인스턴스 반환


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

<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> {
    @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
    List<SurveyAnswerStatistics> findSurveyCount();
}</code>

네이티브 쿼리


네이티브 쿼리는 새 키워드에 대한 직접적인 지원이 부족하지만 Spring Data Projection 인터페이스는 대안을 제공합니다. 해결 방법:

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


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

<code class="java">public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}</code>

2단계: 투영된 속성 반환


저장소 메서드를 업데이트하여 투영된 속성을 반환합니다:

<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> {
    @Query(nativeQuery = true, value =
            "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
    List<SurveyAnswerStatistics> findSurveyCount();
}</code>

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

위 내용은 Spring 데이터 JPA GROUP BY 쿼리에서 사용자 정의 개체를 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.