当参数可能为null时获取记录

时间:2015-01-11 18:56:33

标签: jpa spring-data

我有搜索表单,其中包含开始日期,结束日期,这是强制性的,然后我们更新了非强制性的状态和状态,我已经为此编写了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。

1 个答案:

答案 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)