2013-03-15 3 views
2

저는 Java의 술어에 익숙하지 않아서 내 문제에 대한 해결책을 찾기 위해 Google을 시도해 보았습니다. 따라서 도움/힌트를 환영합니다.JPA 술어 맵이있는 ManyToMany

그래서 여기있다 :

내 개체 모델에서

내가 가지고있는 다음과 같은 매핑 내가 파트너가 모든 엔티티와 나에게 결과를 제공하는 술어를 만들기 위해 돌아 다니면서 어떻게

public class Entity{ 
    @ManyToMany 
    @MapKeyEnumerated(STRING) 
    private Map<A, B> partners = new HashMap<A, B>(); 
} 

. B.id = 2?

답변

1

술어를 작성할 때 조인을 사용하여이를 수행 할 수 있습니다. 귀하의 예를 들어

, 그것은 다음과 같이 할 수 있습니다

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery cq = cb.createQuery(); 
Root<entity> root = cq.from(Entity.class); 
MapJoin<Entity, A, B> mapJoin = root.joinMap("partners"); 

Predicate predicate = cb.equal(mapJoin.get("id"), 2); 

em.createQuery(cq.select(root).distinct(true).where(predicate)); 

(비고 :이 코드를 테스트하지 않았다)