Bonjour !!
Je voulais savoir si c'était possible de faire ça :
En gros, pouvoir passer un paramètre dans la clause where de mon "set". Lorsque je passe une valeur en dur, genre where="langabrev='fr'" ça fonctionne, mais je ne sais pas comment le passer en tant que paramètre dynamique... J'ai tenté des trucs du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <set name="name" table="kind_lang" where="langabrev=:abrev" lazy="false"> <key column="kindid" /> <one-to-many class="KindLangVO" /> </set>
mais ça ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // get the current session Session s = HibernateUtil.getSessionFactory().getCurrentSession(); // create transaction, set query/params and commit transaction s.beginTransaction(); List l = s.createQuery("From KindVO where group=:group and abrev=:abrev") .setInteger("group", groupid ) .setString("abrev", "fr") .list(); s.getTransaction().commit(); return l;
En gros, j'ai une table kind (kindid, kindgroup, kindweight), ainsi qu'une table kind_lang (kindid, langabrev, kind_langname), la seconde contenant les traductions de la table kind.
Dans l'idéal, j'aurai aimé récupérer directement kindid, kindgroup, kindweight et kind_langname en spécifiant le paramètre "langabrev" pour ne récupérer que les traductions dans une langue précise, mais je ne crois pas que ça soit possible... Donc je tente avec une classe KindLangVO, ainsi qu'une classe KindLangId pour la clé composite (kindid-langabrev). Seulement je ne vois toujours pas comment passer un paramètre...
Si vous avez des suggestions pour une solution ou une autre par rapport à mes besoins, je suis à l'écoute
D'avance merci.
Thierry
Partager