Bonjour,

J'utilise Hibernate 3.2 et j'ai une petite question au sujet du lazy-loading.

Voici un extrait du code qui me pose problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
String query = "from Table";
Query hbQuery = getSession().createQuery(query);
List<HbTable> returnedList = hbQuery.list();
 
for(HbTable hbTable : returnedList){
  Hibernate.initialize(hbTable.getColumn1());
  Hibernate.initialize(hbTable.getColumn2());
}
Je pensais qu'à la suite de l'exécution de ce code les objets correspondants seraient chargés et que je pourrais avoir accès à leur id simplement mais ce n'est pas le cas.

L'objet semble être chargé mais son id reste positionné à null.

Avec une requête fetch join cela marche.
Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
String query = "from Table left join fetch column1 left join fetch column2";
Query hbQuery = getSession().createQuery(query);
List<HbTable> returnedList = hbQuery.list();
Cela marche et je peux bien accéder aux objets des colonnes 1 et 2 et donc à leurs ids respectifs !

Quelqu'un saurait pourquoi dans le premier cas cela ne marche pas ? Peut être cela vient il d'une configuration Hibernate à mettre en place ?

Merci d'avance de votre aide.

Sylvain.