6

我有一个像这样的变量long[] ids = [10, 11],我正在尝试像这样触发查询:

Query query2 = session.createQuery("update Employee e SET e.isLatest = false where e.id not in (:ids)");
query2.setParameter("ids", ids);
query2.executeUpdate();

但我收到了类似的错误

org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint <> character varying
  Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

如何在NOT IN参数中传递数组变量?或者有没有其他方法来处理这样的查询?

4

3 回答 3

5

尝试

query2.setParameterList("ids", ids);
于 2013-08-01T06:52:39.290 回答
2

有两种方法

1) 使用setParameterList(,);和传递集合

2) 使用

query2.setParameter("ids", ids);

其中ids是一个字符串,其中包含逗号分隔的 id

例如。

String commaseperatedId="10,11". 接着

query2.setParameter("ids", commaseperatedId);

于 2013-08-01T07:05:19.823 回答
0

我认为query2.setParameters("ids", ids); 应该工作

或者

按照设置参数数组来休眠查询语言

query2.setParameterList("ids", ids);
于 2013-08-01T06:59:38.650 回答