以下是我的代码,我无法从我的Transaction表中获取记录,因为它显示错误 - java.lang.ClassCastException Ljava.lang.Object无法强制转换为com.infotech.model.Transaction
帮我解决问题所在 注意 - 交易是我的班级
ArrayList<Transaction> arr1 = null;
Transaction tt1=null;
try{
SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory();
Session session = sessionfactory.openSession();
session= sessionfactory.openSession();
session.beginTransaction();
int uid = search.getUser_id();
Query query1=session.createQuery("select A_no, date, type, B_id from Transaction t where t.user_id=:uid");
query1.setInteger("uid", uid);
List<Transaction> list=query1.list();
Iterator<Transaction> itr1=list.iterator();
arr1=new ArrayList<Transaction>();
while(itr1.hasNext())
{
tt1=itr1.next();
arr1.add(tt1);
System.out.println(tt1.getA_no()+"\t"+tt1.getB_id());
}
}catch(Exception ex){ex.printStackTrace();}
ModelAndView m=new ModelAndView("form-search","data",tt);
m.addObject("copy", arr1);
答案 0 :(得分:1)
这里的问题是当你使用投影时,Hibernate返回List<Object[]>
(不是List<Transaction>
)。
最简单的方法是更改HQL查询,只是为了检查一切是否正常
Query query1 = session.createQuery("from Transaction t where t.user_id=:uid");
如果您想使用投影,请阅读此内容
答案 1 :(得分:0)
必须是这一行:
List<Transaction> list=query1.list();
您应该将其更改为List<Transaction> list= (List<Transaction>)(List<?>) query1.list();
Java要求显式类型转换从派生类型到基类型。