Hibernate Left Outer join HQL

时间:2011-05-07 17:19:36

标签: hibernate hql

这是我的left join hql查询。执行此代码后,我得到列表大小。但无法将对象投射到相应的pojo类。

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)

1 个答案:

答案 0 :(得分:2)

通过不指定Select案例,查询结果是BwClientdetails数组,bwClientAllocations。 在查询前添加Select client可以解决您的问题

Select client from  BwClientdetails  client left  join client.bwClientAllocations

或替换你的for

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

最好总是指定where子句,它甚至是JPA规范的一部分