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);

就我而言,我想检查用户照片是否上传(照片值是否为空)。我试过上面的查询。

4

2 回答 2

10

请参阅Hibernate 文档中的示例

您应该检查参数是否为空:

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

如果您的目标是概括“b”,以便方法可以接收给定的搜索值或 null,这通常有效:

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 回答