2009-05-04 5 views
0

-je utiliser une clause IN comme le SQLEJB3 requêtes + à l'article

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

suivant Comment puis-je faire cela en EJBQL?

j'ai tryed ce qui suit, ce qui n'a manifestement pas:

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

alors en java je l'ai fait

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

qui me donne l'exception suivante

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

Répondre

4

Le problème est lorsque vous utilisez :parameter_name dans un fragment sql puis appelez query. setParamter("parameter_name", values) il est prévu que values devrait être un peu sorte de collection. Essaye ça.

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

query.setParameter("colValues", values); 
1

Il a été un longtemps depuis que j'ai fait EJBQL, mais cela devrait fonctionner:

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

En outre, vous devrez peut-être définir colValues ​​comme un tableau de nombres plutôt qu'une chaîne