Query q = entityManager.createNativeQuery("SELECT id FROM table1 WHERE id_or_smth IS NULL or id_or_smth = :param");
q.setParameter("param", paramValye);
q.getResultList();
并且paramValue不能为空。 在SQL中,必须始终使用IS NULL和IS NOT NULL,因为这样的查询:
Criteria crit = sess.createCriteria(Table1.class);
crit.setProjection(Restrictions.id());
if (param != null) crit.add(Restrictions.eq("id_or_smth", param));
List result = crit.list();
2条答案
按热度按时间tsm1rwdh1#
HQL和Criteria只有在指定实际的实体属性/表列时才能起作用,因此这是不起作用的:
如果id_or_smth是Table 1列,则查询应如下所示:
并且paramValue不能为空。
在SQL中,必须始终使用
IS NULL
和IS NOT NULL
,因为这样的查询:将始终返回空结果,即使存在满足id_or_smth IS NULL的行
7uzetpgm2#
也许您可以使用criteria queries来代替: