2009-05-04 6 views
0

мне нужно использовать в операторе как следующий SQLEJB3 Запрос + в пункте

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

Проблема в том, когда вы используете :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); 
1

Это было долгое время, так как я сделал EJBQL, но это должно работать:

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

Кроме того, вам может понадобиться установить colValues ​​как массив чисел, а не строки

Смежные вопросы