J'ai comme l'impression que tu utilises la logique du JDBC brut avec Hibernate
![8O](https://www.developpez.net/forums/images/smilies/icon_eek.gif)
!
J'explique : tu touches directement aux clés étrangères en utilisant des identifiants ....
![:nono:](https://www.developpez.net/forums/images/smilies/nono.gif)
: c'est du JDBC brut ça ...
Le but d'utiliser Hibernate c'est faire l'abstraction sur les détails du persistance (surtout les clés étrangères et compagnie).
Dans ton cas, ça reviendrait à remplacer le champ idT1 dans OBJ2 par OBJ1 tout court, et ensuite :
1 2 3 4 5 6 7 8
| OBJ1 = XXXX;//à toi de voir
OBJ2= new OBJ2();
OBJ2.setObj1(OBJ1);
OBJ2.setTitre("blalala");
session.save(OBJ2);
tx.commit() |
Et là, Hibernate va se débrouiller pour persister cette relation : C'est à lui de gérer les clés étrangères, pas à toi.
Pour ta seconde question, ça revient presque à ce que je viens de te dire : avec Hibernate (et HQL), tu dois penser en termes d'objets et de propriétés, pas en terme de tables et colonnes ...
en gros, t'as fait une chose du genre :
or, ça, c'est du SQL, pas de HQL ! Si tu fais comme je te l'ai dit précédemment et que tu ajoutes un champ OBJ1 dans OBJ, ta requette devient alors :
Voilà. T'aurais pu quand même fournir ta requête au lieu de nous laisser la deviner ....
Partager