2011-05-07 2 views
3

Ceci est ma requête left join hql. Après l'exécution de ce code, je reçois la taille de la liste. Mais impossible de lancer l'objet dans la classe de pojo respective.Hibernate LeftOuter rejoindre HQL

Query query=session.createQuery("from BwClientdetails client left join client.bwClientAllocations"); 

System.out.println(">>>"+query.list().size()); 
List<BwClientdetails> list=query.list(); 
for(int i=0;i<list.size();i++){ 
    BwClientdetails bc=list.get(i); 
    System.out.println(bc.getClientid()); 
} 

Je reçois ci-dessous erreur:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to org.bluewhale.model.BwClientdetails 
     at testapplication.Main.getClients(Main.java:364) 
     at testapplication.Main.main(Main.java:54) 

Répondre

2

En ne specifing un Select cas, le résultat de votre requête est un tableau de BwClientdetails, bwClientAllocations. Ajout Select client en face de la requête devrait résoudre votre problème

Select client from BwClientdetails client left join client.bwClientAllocations 

ou le remplacement de votre par

for(int i=0;i<list.size();i++){ 
    BwClientdetails bc=list.get(i)[0]; 
    System.out.println(bc.getClientid()); 
} 

Il est recommandé de alway spécifier une clause where, il fait même partie de la spécification JPA