【问题标题】:Equivalent criteria query for named query命名查询的等效条件查询
【发布时间】:2011-12-16 09:48:24
【问题描述】:

感谢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();

返回猫列表的等效条件查询是什么?

【问题讨论】:

    标签: java hibernate hibernate-criteria


    【解决方案1】:

    使用 JPA 2.0 标准: (这是使用 JPA 2.0 Criteria api 实现此目的的众多方法之一)

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

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多