【问题标题】:Using a Boolean param to query Null or Not Null使用布尔参数查询 Null 或 Not Null
【发布时间】:2018-09-12 23:57:15
【问题描述】:

背景 我需要一个查询,它会在给定一组参数的情况下返回所有已分配或未分配的作业。我既不控制数据库也不控制 URL 中的参数。当前,如果 URL 想要所有分配的作业,则 URL 发送 true,如果想要未分配,则发送 false。在表中,“已分配”列是一个外键,如果已分配,则具有 ID,如果未分配,则为 null。 我的目标是

@Query(Select * from job j where j.location =:loc and j.assigned= :assigned) 
Public List<Job> getJobs(@Param("loc") String location,
                         @Param("assigned ") Boolean assigned);

当然,我可以根据assigned 是真还是假来创建多个查询。但它希望它可以在一个动作中完成,而不是使用 Postgres 数据库 fyi

【问题讨论】:

  • 抱歉格式化必须在我的手机上输入无法登录工作计算机上的所以会尝试修复它
  • 所以如果 :assigned 参数为假,你想分配 = NULL 吗? COALESCE(j.assigned, FALSE) = :assigned 之类的东西?

标签: sql postgresql jpa spring-data


【解决方案1】:

WHERE 子句中使用CASE 语句:

@Query(Select * from job j where j.location =:loc and case when :assigned then j.assigned is not null else j.assigned is null end)

Testing

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 2016-11-23
    • 2011-11-10
    • 2021-09-29
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多