gpt4 book ai didi

java - 如何将空列表发送到 IN 子句

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:43 24 4
gpt4 key购买 nike

我想使用这个 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 (....) 不能为空。这个问题有解决办法吗?

最佳答案

不执行查询是允许的,甚至是非常好的:

if (merchant_ids.isEmpty()) {
return new ArrayList<>();
} else {
String hql = "select e from " + Terminals.class.getName()
+ " e WHERE e.merchantId IN :merchant_ids";
return entityManager.createQuery(hql, Terminals.class)
.setParameter("merchant_ids", merchant_ids)
.getResultList();
}

我不知道如果传递 null 而不是空列表会发生什么;SQL ... IN NULL 可以做到。另一方面,它可能会进行全表扫描以返回 0 个结果。

如果 x IN() 不会产生 0 条记录(当存在 OR ... 时)则:

if (merchant_ids.isEmpty()) {
merchant_ids.add(-1);
String hql = "select e from " + Terminals.class.getName() + ...

关于java - 如何将空列表发送到 IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57948671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com