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

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

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

现在我想通过一个名为“ghost”的 bool 字段进行过滤,它等于真(或假,视情况而定)。

翻译:



我必须使用 cq.where() 吗?如何?

最佳答案

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

关于jpa - 简单的 JPA 2 条件查询 "where"条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10581429/

10-11 03:30