关于hibernate:java.lang.ClassCastException:[Ljava.lang.Object;无法转换为com.infotech.model.Transaction(class)

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.infotech.model.Transaction(class)

这是下面提供的代码,由于显示错误,我无法从我的Transaction表中获取记录--java.lang.ClassCastException Ljava.lang.Object无法转换为com.infotech.model.Transaction <铅>

帮我解决问题出在哪里
注意-交易是我的课程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 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);


这里的问题是,当您使用投影时,Hibernate返回List<Object[]>(不是List<Transaction>)。

最简单的方法是更改??HQL查询,只是检查是否一切正常

1
Query query1 = session.createQuery("from Transaction t where t.user_id=:uid");

如果要使用投影,请阅读此内容

SpringBoot Hibernate Restful:格式响应


必须是这一行:

1
List<Transaction> list=query1.list();

您应该将其更改为List<Transaction> list= (List<Transaction>)(List<?>) query1.list();

Java需要从派生类型到基本类型的显式类型转换。