【发布时间】:2020-01-16 19:23:50
【问题描述】:
我想使用这个 SQL 查询:
String hql = "select e from " + Terminals.class.getName() + " e WHERE e.merchantId IN :merchant_ids";
TypedQuery<Terminals> query = entityManager.createQuery(hql, Terminals.class).setParameter("merchant_ids", merchant_ids);
List<Terminals> merchants = query.getResultList();
但我得到错误:the right syntax to use near ') 所以IN (....) 中的 IN 子句列表不能为空。这个问题有解决办法吗?
【问题讨论】:
-
我在链接中找不到解决方案。如您所见,我的代码中没有
(...)。 -
当您有一个空列表并且您正在寻找该列表中的内容时,您真的期望得到结果吗?这样的查询一定会失败。事实上,您的代码让您寻找 ID,如果搜索列表中没有,那么结果中应该没有。你在做什么我的家伙?
-
在我的情况下,当列表 Merchant_ids 为空时,我不需要从终端表中获取结果。一般的想法是我正在寻找与分配的商家 ID 匹配的终端
-
想一想,如果您正在搜索空列表中的内容,您将获得空结果或所有结果,因此行为未定义,因此出现错误。如何处理空列表是您必须自己弄清楚并决定的实现细节。
标签: java jpa spring-data-jpa jpa-2.0