2014-04-11 3 views
11

스프링 데이터를 사용하여 동적 쿼리를 설정하려고합니다. 기본적으로 여러 특성을 가진 배열이 있으므로 이러한 특성을 기반으로 쿼리를 어셈블해야합니다. = A AND 특성 = B AND 특성 = C "이지만 특성 양이 다를 수 있습니다.스프링 데이터 동적 쿼리

@Query 주석을 사용할 수 있지만 @Query 페이지 가능 결과를 만들 수 있습니까?

다른 방법이 있습니까?

Page<Recipe> findDistinctByNameContainingAndOrganizationAndCharacteristicsInOrIngredientsContainingAndOrganizationAndCharacteristicsInOrDescriptionContainingAndOrganizationAndCharacteristicsInAllIgnoreCase(
     String name, Organization organization1, List<Characteristic> characteristic1, 
     String ingredients, Organization organization2, List<Characteristic> characteristic2, 
     String description, Organization organization3, List<Characteristic> characteristic3, 
     Pageable pageable); 
+0

예 @ 쿼리 지원 Pageable –

+1

QueryDSL을 사용해보십시오. 예를 들어,이 경우 저장소 또는 서비스에 대한 모든 술어를 보낼 수 있습니다. http://www.querydsl.com/ –

+0

이러한 메소드 선언에 대해서는'@ Query' 및 Querydsl과 같은 다른 옵션을 살펴볼 것입니다. 이 메서드는 긴 이름과 매개 변수 목록으로 인해 효과적으로 사용할 수 없습니다. –

답변

9

예. @Query은 페이지 가능을 지원합니다. 그렇습니다.이를 수행하는 또 다른 방법이 있습니다.

조건을 동적으로 추가 AND/OR 할 수있는 조건으로 쿼리를 만들 수 있습니다. 사실 내 개발을 촉진하기 위해 querydsl을 사용합니다. 당신이 부스의 좋은 설명을 찾을 수있는이 게시물에서

는 : 그것은 처음에 좀 더 복잡한 보일 수 입력해도 http://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

,이 기능의 사용이 증가하는 복잡성과 코드를 더욱 일관성있게됩니다