1

我需要使用如下 SQL 的 IN 子句

SELECT * FROM tableA WHERE colA in (1, 2,3)

我如何在 EJBQL 中做到这一点?

我尝试了以下方法,显然失败了:

SELECT tab FROM tableA tab WHERE tab.colA in (:colValues)

然后在java中我做了

query.setParameter("colValues","1,2,3")

这给了我以下例外

org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-01722: invalid number
4

2 回答 2

5

问题是当您:parameter_name在 sql 片段中使用然后调用query. setParamter("parameter_name", values)它时,预计values应该是某种collection. 试试这个。

List<Integer> values = new ArrayList<Integer>();
values.add(1);
values.add(2);
values.add(3);

query.setParameter("colValues", values);
于 2009-05-04T19:26:03.653 回答
1

自从我完成 EJBQL 以来已经有很长时间了,但这应该可以工作:

  SELECT OBJECT(t)
       FROM Tab AS t
       WHERE t.colA IN (:colValues)

此外,您可能需要将 colValues 设置为数字数组而不是字符串

于 2009-05-04T19:24:01.553 回答