2014-10-10 2 views
1

를 사용하여 외래 키에 여기 내 HQL는 기준 API

select distinct p from PayerCriteria p where p.determinationRequest.id = :determinationRequestId 

어디 내가 간단한을 다시 작성할 수 있습니다 어떻게 여기에 유일한 중요한 알 수없는 생각 determinationRequest.idLong 것입니다. 당신이 CriteriaAPI를 사용하려면

답변

0

당신이 할 필요가있을 것이다 :

final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); 
    final CriteriaQuery<PayerCriteria> criteriaQuery = criteriaBuilder.createQuery(PayerCriteria.class); 
    final Root<PayerCriteria> root = criteriaQuery.from(PayerCriteria.class); 
    criteriaQuery.select(root); 

    final Join join = root.join("determinationRequest"); 

    final Predicate predicate = criteriaBuilder.equal(join.get("id"), 1); 
    criteriaQuery.where(predicate); 

    final TypedQuery<PayerCriteria> query = entityManager.createQuery(criteriaQuery); 

    System.out.println("------------>" + query.getResultList()); 

쉽게 EasyCriteria (http://easycriteria.uaihebert.com)라는 이름의이 부담을하게하는 프레임 워크가있다. 위의 기준은 다음과 같습니다 :

EasyCriteria<RegularEntityOne> easyCriteria = EasyCriteriaFactory.createQueryCriteria(entityManager, RegularEntityOne.class); 
    easyCriteria.innerJoin("regularEntityTwo"); 
    easyCriteria.andEquals("regularEntityTwo.id", 1); 

    System.out.println("------------>" + easyCriteria.getResultList());