我相信hibernate首先将您的HQL查询转换为SQL,然后才尝试绑定您的参数。这意味着它不能从重写查询
param = ?
到param is null
。尝试使用Criteria API:
Criteria c = session.createCriteria(CountryDTO.class);
c.add(Restrictions.eq(“type”, type));
c.add(status == null ? Restrictions.isNull(“status”) : Restrictions.eq(“status”, status));
List result = c.list();



