Переход в режим гибернации с подключением к HQL

#hibernate #hql

#переход в спящий режим #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:

Если не указывать регистр выбора, результатом вашего запроса будет массив 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