我有一个 hql 请求,我必须按列表中的参数值过滤行。 我将参数传递给请求,一切正常,直到其中一个参数不包含括号。 如果参数 = 'Windows' 一切正常,但如果 'macOS 10.13 (High Sierra)' 它找不到正确的行。
select agent where agent.operatingSystem in (:p1,:p2)
我发现如果存在不带括号的过滤值的行 - 它查询会找到它们: 此查询返回带有 os = "macOS 10.13 High Sierra"但未找到 "macOS 10.13 (High Sierra)"的代理
最佳答案
你可以这样做。准备操作系统列表并将其作为列表传递给您的“in 子句”。
Query query = session.createQuery("FROM YourTable t WHERE t.os IN (:osIds)");
query.setParameterList("osIds", listOfOs);
关于java - hql 去掉参数值的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49749236/