如果Boolean为null,则SQL返回所有值

时间:2015-08-14 14:49:57

标签: sql hibernate boolean

这可能是一个愚蠢的问题,但我仍然坚持这个问题。我在hibernate中有一个方法,如下所示

public List<User> searchUser(String name, Boolean booleanCheck) {
    Query hqlQuery = sessionFactory.getCurrentSession().createQuery("from User user where user.booleanCheck = :booleanCheck");
    return hqlQuery.setParameter("booleanCheck", booleanCheck).list();
}

我需要的是如果booleanCheck参数为null,它应该返回所有值。如果我有一个true或false值,它应该返回选定的值。

目前,如果它为空,则不返回任何值。我能做些什么来获得理想的输出吗?

先谢谢

2 个答案:

答案 0 :(得分:1)

尝试通常的方法来快捷SQL中的参数:

Query hqlQuery = sessionFactory.getCurrentSession().createQuery("from User user where (:booleanCheck is NULL or user.booleanCheck = :booleanCheck)");

答案 1 :(得分:0)

当值为null时,您的查询必须不同。在您的实现中,生成的查询是

select * from User user where user.booleanCheck = null;
确实一无所获。当booleanCheck为null时,您必须生成查询

select * from User user where user.booleanCheck is null;