7
Query query =  em.createQuery(
        "select count(u) from User u where (u.id=:a) and (u.photo=:b)")
        .setParameter("a",userId).setParameter("b",null);

私の場合、ユーザーの写真がアップロードされたかどうかを確認したい (写真の値が null かどうか)。上記のクエリを試しました。

4

2 に答える 2

10

Hibernate のドキュメントの例を参照してください。

パラメータが null であることを確認する必要があります。

Query query =  em.createQuery(
        "select count(u) from User u where (u.id=:userId) and (u.photo is null)")
        .setParameter("userId",userId);
于 2013-03-05T05:46:34.847 に答える
7

メソッドが特定の検索値または null のいずれかを受け取ることができるように、「b」を一般化することを目指している場合、これは通常は機能します。

Query q = em.createQuery (
  "SELECT ... WHERE ... ( :b IS NULL AND u.photo IS NULL OR u.photo = :b )" 
);
q.setParameter ( "b", searchValue ); // can be null
...

このアプローチを使用するためのヘルパーがここにあります (parameterizedWithNullHql() を参照)。

于 2015-02-03T16:57:12.103 に答える