Bonjour
Je souhaite exécuter une requête du type :
Comment faire pour passer en paramètre la liste des couples de valeurs dans le IN ? Doit-on passer une collection de tableau d'objets ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select id from table1 where (col1,col2) in ( ('val1','val2') , ('val3','val4') , ... );
Chaque entrée de la collection serait un tableau d'objet et correspondrait au couple. Chaque tableau d'objet contiendrait les deux valeurs qui forment le couple ...
J'ai essayé ceci en HQL, mais ça sort une exception :
Exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 final Set<String[]> couples = new HashSet<String[]>(); couples.add(new String[] { "val1", "val2" }); couples.add(new String[] { "val3", "val4" }); String req = "select t.id from Table1 t where (t.col1,t.col2) in (:couples)"; final Query query = session.createQuery(req); query.setParameterList("couples", couples); final List<String> res = query.list();
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 2009-02-19 12:22:33,044 [main] [WARN] org.hibernate.util.JDBCExceptionReporter - SQL Error: 920, SQLState: 42000 2009-02-19 12:22:33,044 [main] [ERROR] org.hibernate.util.JDBCExceptionReporter - ORA-00920: invalid relational operator
Partager