这可能是一个愚蠢的问题,但我仍然坚持这个问题。我在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值,它应该返回选定的值。
目前,如果它为空,则不返回任何值。我能做些什么来获得理想的输出吗?
先谢谢
答案 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;