허용되지와 절 나는이 같은 JPA 저장소 및 JPQL 쿼리가 있습니다JPQL 쿼리 - 최대 절전 모드 : 가져온 협회
@Query("SELECT c from Campaign c" +
" left join fetch c.postsList p on p.status = :postStatus" +
" left join fetch p.platform" +
" left join fetch c.campaignStatistics stat on stat.updateDate = :updateDate" +
" where c.id =:id")
Campaign findCampaignWithPosts(
@Param("id") Long id,
@Param("postStatus") PostStatus postStatus,
@Param("updateDate") LocalDate updateDate);
을하지만 '작업 아무튼. 내가 얻을 :
org.hibernate.hql.internal.ast.QuerySyntaxException: with-clause not allowed on fetched associations; use filters
본인은 JPA 2.1 스펙에 대한 정보를 공부 가서 그게 내가 무엇을 발견 : 조인을 사용
이 쿼리에 가끔 내가 널 얻을 렸기 때문에 절 사용 후 테이블을 조인하는 경우 이러한 유형의 쿼리가, 날 전혀 도움이되지 않는다는 점에 유의해야한다조인 조건은 매핑의 가입 열에서 비롯됩니다. 즉, JPQL 사용자는 일반적으로 모든 관계가 결합 된 방법을 알고 을 알 필요가 없습니다. 경우에 따라 외부 조건의 경우 일반적으로 의 조인 조건에 추가 조건을 추가하는 것이 바람직합니다 ( ). 이것은 ON 절을 통해 수행 할 수 있습니다. ON 절은 JPA 2.1 규격에 정의되어 있으며 일부 JPA 공급자가 지원할 수 있습니다. EclipseLink : Hibernate : TopLink - ON 절을 지원합니다.
.
@Query("SELECT c from Campaign c" +
" left join fetch c.postsList p" +
" left join fetch p.platform" +
" left join fetch c.campaignStatistics stat" +
" where c.id =:id" +
" and p.status = :postStatus" +
" and stat.updateDate = :updateDate")
이 경우 어떻게해야합니까? 네이티브 쿼리를 사용하는 방법 이외의 대안 솔루션이 있습니까? 그러나 거의 모든 JPQL 쿼리의 의미는 손실됩니다. 최대 절전 모드 버전 5.2.12를 사용합니다.
당신이 확인 했
는 시도인가? –
@Luiggi Mendoza 아니요, 클래스의 모든 필드에 'with'가 포함되어 있지 않습니다. – Birthright
아마도 FETCH JOIN을 사용할 때 'ON' 절을 사용할 수 없다는 뜻입니까? 그렇다면 JPA 사양도 마찬가지입니다. 정말 놀랍습니까? 'ON'은 일반적인'JOIN'에서만 허용됩니다. – DN1