Эквивалентный критерий запроса для именованного запроса - PullRequest
2 голосов
/ 27 октября 2011

Мой именованный запрос выглядит следующим образом, благодаря здесь.

@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();

Каким будет запрос на эквивалентный критерий, который возвращает список кошек?

1 Ответ

2 голосов
/ 27 октября 2011

С критериями JPA 2.0: (Это один из многих способов достижения этого с помощью API критериев JPA 2.0)

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...