EJB3 Query + in子句

Nun*_*ado 1 java oracle hibernate ora-01722 ejb-3.0

我需要像下面的SQL一样使用IN子句

SELECT * FROM tableA WHERE colA in (1, 2,3)
Run Code Online (Sandbox Code Playgroud)

我如何在EJBQL中执行此操作?

我试过以下,显然失败了:

SELECT tab FROM tableA tab WHERE tab.colA in (:colValues)
Run Code Online (Sandbox Code Playgroud)

然后在java我做了

query.setParameter("colValues","1,2,3")
Run Code Online (Sandbox Code Playgroud)

这给了我以下例外

org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-01722: invalid number
Run Code Online (Sandbox Code Playgroud)

mR_*_*r0g 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);
Run Code Online (Sandbox Code Playgroud)