2011-10-27 2 views
2
내 명명 된 질의는 다음과 같습니다

, 감사 here.동등한 조건 쿼리

@NamedQuery(
name="Cat.favourites", 
query="select c 
     from Usercat as uc 
     inner join uc.cat as c 
     where uc.isFavourtie = true 
     and uc.user = :user") 

하고 호출은 다음과 같습니다를 구현 :

Session session = sessionFactory.getCurrentSession(); 
Query query = session.getNamedQuery("Cat.favourites"); 
query.setEntity("user", myCurrentUser); 
return query.list(); 

동등한 조건 쿼리를 것입니다 무슨 고양이 목록을 반환합니까? JPA 2.0 기준

답변

1

:

final CriteriaQuery<Cat> cq = getCriteriaBuilder().createQuery(Cat.class); 
final CriteriaBuilder cb = entityManager.getCriteriaBuilder(); 

final Root<Usercat> uc= cq.from(Usercat.class); 

cq.select(uc.get("cat"); 

Predicate p = cb.equal(uc.get("favourtie", true); 
p = cb.and(p, cb.equal(uc.get("user"), user)); 
cq.where(p); 

final TypedQuery<Cat> typedQuery = entityManager.createQuery(cq); 
return typedQuery.getResultList(); 
(이것은 당신이 사용하는 JPA 2.0 기준 API를 달성 할 수있는 많은 방법 중 하나입니다)