我有搜索表单,其中包含开始日期,结束日期,这是强制性的,然后我们更新了非强制性的状态和状态,我已经为此编写了JPA查询
select c from Entity c
where c.status=:status
and c.updatedBy=:updatedBy
and c.startDate>=:startDate
and c.endDate:<= c.endDate
当非必填字段中的值为空时,此查询返回错误,如果serach参数包含空值,我需要帮助重写查询以获取结果,在我的情况下,updatedBy和status可能为null。
答案 0 :(得分:0)
对于没有必填字段,使用coalesce
不返回null或修改实体以接受它们的空值(首选解决方案),例如,如果Status是可空的,则使用:
select c.StartDate, c.EndDate, c.Id, c.UpdatedBy , coalesce(c.Status,0)
from Entity c where c.status=:status and c.updatedBy=:updatedBy
and c.startDate>=:startDate and c.endDate:<= c.endDate
Order by c.StartDate, c.EndDate, c.Id, c.UpdatedBy , coalesce(c.Status,0)