【发布时间】: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"