3

私はjpa-hibernateの基礎を学んでいます。

すべてのユーザーを取得するための次のクエリがあります。

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

ここで、「ゴースト」という名前のブール値フィールドでフィルタリングしたいと思います。ここで、true (または false、場合によって異なります) に等しくなります。

翻訳:

SELECT * FROM ユーザー WHERE ゴースト = 0;

cq.where() を使用する必要がありますか? どのように?

4

1 に答える 1

8

はい、使用する必要があります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);
于 2012-05-14T10:31:45.687 に答える