2016-06-29 3 views
0

스프링 데이터 JPA에서 BooleanBuilder으로 필터링 된 검색을 만들었습니다. 내 프로젝트의 쿼리는 @Query 또는 QueryDSL입니다. 그러나 나는 DISTINCT ON 및 동적 필터에 직면했을 때 쿼리를 공식화하는 데 어려움을 겪고 있습니다. 나는 QueryDSL에서 이와 비슷한 것을 만드는 데 어려움을 겪고있다.booleanBuilder 매개 변수와 함께 queryDSL에서 DISTINCT ON을 사용하려면 어떻게해야합니까?

SELECT DISTINCT ON (name) * 
FROM foo_table 
WHERE <my filtered booleanBuilder> 
ORDER BY name, version_number DESC; 

이것은 가능합니까? 어떤 대안이나 도움을 주시면 감사하겠습니다. 감사!

답변

0

DISTINCT ON은 PostgreSQL 공급 업체 특정 SQL 절입니다. JPA와 함께 사용할 수 없습니다 (기본 쿼리 제외). SQL과 직접 사용하십시오.

+0

_WHERE_ 절이 수정되지 않았기 때문에 원시 쿼리를 사용할 수 없습니다. 해결 방법에 대한 제안 사항이 있습니까? 데이터베이스에서 중복 이름이 있지만'WHERE' 절과 함께 그 이름의 가장 높은 버전 만 가져 오려고합니다. – jetGeekster

+0

무슨 뜻인지 잘 모르겠습니다. 네이티브 쿼리를 사용할 수없는 이유는 무엇입니까? 동적 쿼리를 사용하여 동적 SQL을 작성할 수도 있습니다 ... –

+0

구현하기가 더 쉽기 때문에'BooleanBuilder'로 필터링하는 방법이 있다고 생각했습니다. 하지만 복잡한 쿼리에서는 불가능하다고 생각합니다. 그렇습니다. 이제는 내 코드에서 원시 쿼리를 사용하고 있습니다. 보는 고통은 있지만 지금 당장 할 것입니다. 도와 주셔서 감사합니다. – jetGeekster