JPA:如何用HQL检查NULL查询参数值?

时间:2013-03-05 05:35:15

标签: hibernate jpa

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

在我的情况下,我想检查是否上传了用户照片(照片值是否为空)。 我试过上面的查询。

2 个答案:

答案 0 :(得分:7)

请参阅example in Hibernate documentation

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

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

答案 1 :(得分:5)

如果你的目标是推广“b”,那么方法可以接收值或null,这通常有效:

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

有一个帮助器可以使用这种方法here(参见parameterizedWithNullHql())。