简单的JPA 2条件查询“where”条件

时间:2012-05-14 10:18:35

标签: jpa jpa-2.0 criteria

我正在学习jpa-hibernate基础知识。

我有这个查询来获取所有用户:

CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
        CriteriaQuery cq = cb.createQuery();
        cq.select(cq.from(Utente.class));
        return getEntityManager().createQuery(cq).getResultList();

现在我想通过名为'ghost'的布尔字段进行过滤,其中它等于true(或者假,它取决于)。

翻译:

  

SELECT * FROM users WHERE ghost = 0;

我必须使用cq.where()吗?怎么样?

1 个答案:

答案 0 :(得分:7)

是的,您必须使用cq.where()

尝试这样的事情:

Root<Utente> utente = cq.from(Utente.class);
boolean myCondition = true;    // or false
Predicate predicate = cb.equal(utente.get(Utente_.ghost), myCondition);
cq.where(predicate);

我使用了应该自动生成的规范元模型类Utente_。这避免了在键入字段名称时出错的风险,并增强了类型安全性。否则你可以使用

Predicate predicate = cb.equal(utente.get("ghost"), myCondition);