2010-05-25 5 views
5

그냥 빨리 질문 :JPQL 체크 대다 관계

이 관계는 "우정"과 설명 예를 들어 동일한 개체에 ManyToMany 관계 (연결되어 (예를 들어, 사용자에 대한) 기업이있다

대칭입니다.

사용자 A가 사용자 B의 "친구"인지 확인하는 실행 시간면에서 가장 빠른 방법은 무엇입니까? "멍청한"방법은 전체 목록을 가져 와서 사용자가 있는지 확인하는 것입니다.하지만 분명히 오버 헤드입니다.

나는

여기에 샘플 코드의 JPA 2를 사용하고 있습니다 :

@Entity 
@Table(name="users") 
public class UserEntity { 
    @ManyToMany(fetch = FetchType.LAZY) 
    private List<UserEntity> friends; 

    .... 
} 

답변

6

당신이 무엇 MEMBER OF 사용에 대한 전체 목록을 검색하지 않으려면? 다음과 같은 내용이 있습니다.

SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends 

친구가 B 인 모든 사람에게 제공됩니다. 결과를 A로만 제한하려면 WHERE 절에 조건을 추가하십시오.

당신이 원하는 것을 성취하는 가장 좋은 방법인지 확신하지 못합니다. "벙어리"방식은 실제로 그렇게 바보 같아 보이지 않습니다.

+0

고마워요! 이것은 내가 필요한 것입니다. 다음 경우에 쿼리를 수정하는 방법을 제안 할 수도 있습니다. friend는 Entity 참조가 아닌 id입니다. 간단한 질문에 사과하지만 JPQL에서 약간 분실 됨 :-) – Juriy

+0

이미 신경 써야합니다 .--) 이미 발견되었습니다. – Juriy

+0

@Juriy 당신이 찾은 해결책을 알려주실 수 있습니까? – stivlo