【问题标题】:hql removes parentheses from parameter valuehql 从参数值中删除括号
【发布时间】:2018-04-10 08:47:06
【问题描述】:

我有一个 hql 请求,我必须按列表中的参数值过滤行。 我将参数传递给请求,一切正常,直到其中一个参数不包含括号。 如果 parameter = '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)" 的代理

【问题讨论】:

  • 能否贴出实际的查询代码?
  • 类似:select a.os in ('windows', 'macOS 10.13 (High Sierra)')
  • 选择agent.operatingSystem in (:p1,:p2)的代理
  • 在 cmets 中添加代码。 edit你的问题。

标签: java postgresql hibernate hql


【解决方案1】:

你可以做这样的事情。准备好操作系统列表并将其作为列表传递给您的“in 子句”。

Query query = session.createQuery("FROM YourTable t WHERE t.os IN (:osIds)");
query.setParameterList("osIds", listOfOs);

【讨论】:

  • 这没有帮助。但我发现如果存在不带括号的过滤值的行 - 它会查询找到它们
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 2014-01-28
  • 1970-01-01
  • 2013-11-09
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
相关资源
最近更新 更多