当参数可能为空时获取记录
fetch records when parameters may be null
我有包含开始日期、结束日期的搜索表单,这是强制性的,然后我们有 updatedBy 和非强制性的状态,我已经为此编写了 JPA 查询
select c from Entity c
where c.status=:status
and c.updatedBy=:updatedBy
and c.startDate>=:startDate
and c.endDate:<= c.endDate
当非必填字段中的值为 null 时,此查询返回错误,如果 serach 参数包含 null 值,我需要帮助重新编写查询以获取结果,在我的情况下 updatedBy 和 status 可能为 null。
for none 必填字段使用 coalesce
不 return null 或修改实体以接受它们的 null(首选第一个解决方案)例如,如果 Status 为 nullable 使用:
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)
我有包含开始日期、结束日期的搜索表单,这是强制性的,然后我们有 updatedBy 和非强制性的状态,我已经为此编写了 JPA 查询
select c from Entity c
where c.status=:status
and c.updatedBy=:updatedBy
and c.startDate>=:startDate
and c.endDate:<= c.endDate
当非必填字段中的值为 null 时,此查询返回错误,如果 serach 参数包含 null 值,我需要帮助重新编写查询以获取结果,在我的情况下 updatedBy 和 status 可能为 null。
for none 必填字段使用 coalesce
不 return null 或修改实体以接受它们的 null(首选第一个解决方案)例如,如果 Status 为 nullable 使用:
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)