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

6 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);
Run Code Online (Sandbox Code Playgroud)

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

Tak*_*aky 8

请参阅Hibernate文档中的示例.

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

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


zak*_*mck 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
...
Run Code Online (Sandbox Code Playgroud)

还有就是用这种方法的帮助这里(见parameterizedWithNullHql())。