我需要像下面的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
答案 0 :(得分:5)
问题是当你在sql片段中使用:parameter_name
然后调用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);
答案 1 :(得分:1)
自从我完成EJBQL以来已经有很长一段时间了,但这应该可行:
SELECT OBJECT(t)
FROM Tab AS t
WHERE t.colA IN (:colValues)
此外,您可能需要将colValues设置为数字数组而不是字符串