2012-05-14 59 views
3

我在学习jpa-hibernate基础知识。简单的JPA 2条件查询“where”条件

我有这个疑问的让所有用户:

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

现在我想通过一个名为“鬼”地方等于真(或假,这取决于)一个布尔字段进行过滤。

翻译:

SELECT * FROM用户WHERE鬼= 0;

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

回答

6

是的,你必须使用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); 
+0

没关系,但用cq.select(utente)编辑你的答案; –