2013-06-24 3 views
0

У меня есть проблема со вступлением в CriteriaAPI.
Я хочу получить результат с уникальными объектами Forma, но в настоящее время я получаю несколько объектов (их число равно числу Gniazdo объектов).JPA/Hibernate Criteria API JOIN

Это мой код:

CriteriaBuilder cb = em.getCriteriaBuilder(); 
    CriteriaQuery<Forma> query = cb.createQuery(Forma.class); 
    Root<Forma> root = query.from(Forma.class); 

    Join<Forma, Gniazdo> socketJoin = root.join("gniazda", JoinType.INNER); 

    List<Predicate> predicates = new ArrayList<Predicate>(); 

    predicates.add(root.get("dataUsuniecia").isNull()); 
    predicates.add(socketJoin.get("dataUsuniecia").isNull()); 

    Predicate[] conditions = predicates.toArray(new Predicate[predicates.size()]); 
    query.where(cb.and(conditions)); 

    List<Forma> queryResult = em.createQuery(query).getResultList(); 

Пожалуйста, помогите.

ответ

1

Вы должны использовать query.distinct(true)

+0

Спасибо за помощь, это правильный ответ. – bemol