【问题标题】:How to handle null for IN clause in JPA query如何在 JPA 查询中处理 IN 子句的 null
【发布时间】:2016-05-24 12:03:51
【问题描述】:

这里municipalities参数可以为空。但 IN 子句不适用于 null。如果只有一个参数,即市政当局,我可以在 Java 级别处理这个问题。但是OR中还有一个条件,必须执行。

List<Municipality> municipalities = myDao.findAll();  // returns empty list
em.createQuery("SELECT p FROM Profile p JOIN p.municipality m WHERE m IN (:municipalities) OR m.city = :city")
    .setParameter("municipalities", municipalities)
 .setParameter("city", city)
    .getResultList();

那么怎么做呢?我们可以在 JPA IN 子句中处理 null 吗?如果它为空,则不执行该条件

【问题讨论】:

  • "SELECT p FROM Profile p JOIN p.municipality m WHERE (:municipalities is not null and m IN (:municipalities)) OR m.city = :city"

标签: java mysql hibernate jpa


【解决方案1】:

您可以修改查询

String sql="";
if(municipalities!=null){
sql="SELECT p FROM Profile p JOIN p.municipality m WHERE m IN (:municipalities) OR m.city = :city"
}
else
{
sql="SELECT p FROM Profile p JOIN p.municipality m WHERE  m.city = :city"
}
List<Municipality> municipalities = myDao.findAll();  // returns empty list
em.createQuery(sql)
    .setParameter("municipalities", municipalities)
 .setParameter("city", city)
    .getResultList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多