>  기사  >  Java  >  Spring 데이터 JPA 그룹화 쿼리 결과에서 사용자 정의 개체를 검색하는 방법은 무엇입니까?

Spring 데이터 JPA 그룹화 쿼리 결과에서 사용자 정의 개체를 검색하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 14:21:02487검색

How to Retrieve Custom Objects from Spring Data JPA Grouped Query Results?

Spring 데이터 JPA 그룹화된 쿼리 결과에서 사용자 정의 개체를 검색하는 방법

개요

Spring Data JPA는 JPQL 쿼리를 실행하고 결과를 다음과 같이 검색하는 메커니즘을 제공합니다. 사용자 정의 개체.

JPQL 쿼리

1단계: Bean 클래스 정의

원하는 개체 구조를 나타내는 간단한 Bean 클래스를 만듭니다.

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

  // Constructor for object instantiation
}</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>

네이티브 쿼리

네이티브 쿼리를 사용하는 경우 JPA 관련 구문은 지원되지 않습니다. 대신 다음을 사용하세요.

1단계: 투영 인터페이스 생성

원하는 객체의 속성을 지정하기 위한 투영 인터페이스 정의:

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

2단계: 쿼리의 결과 필드 매핑

쿼리의 SQL AS 키워드를 사용하여 결과 필드를 프로젝션 속성에 매핑:

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

고려 사항

  • Bean 클래스 경로가 정규화되었는지 확인하세요.
  • Bean 클래스를 인스턴스화할 때 new 키워드를 사용하세요.
  • 생성자의 속성 순서는 쿼리의 필드 순서와 일치해야 합니다.
  • 기본 쿼리에 프로젝션 인터페이스를 사용합니다.
  • 기본 쿼리에서 AS를 사용하여 각 결과 필드를 매핑합니다.

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

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