2011-05-07 52 views
3

这是我的left join hql查询。执行此代码后,我得到列表大小。但无法将对象投射到各自的pojo类。Hibernate LeftOuter加入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()); 
} 

我得到以下错误:

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) 

回答

2

通过不specifing一个选择的情况下,查询的结果是BwClientdetails,bwClientAllocations数组。 在查询前面添加Select client应该解决您的问题

Select client from BwClientdetails client left join client.bwClientAllocations 

或更换您通过

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

它来送花儿给人指定where子句的最佳实践,它是JPA规范,甚至部分