2017-12-16 2 views
0

아래 코드는 오류가 표시되어 트랜잭션 테이블에서 레코드를 가져올 수 없습니다. java.lang.ClassCastException Ljava.lang.Objectjava.lang.ClassCastException : [Ljava.lang.Object; com.infotech.model.Transaction (클래스)에 캐스팅 될 수 없습니다.

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

당신에게 : 문제 참고 - 트랜잭션 그것은이 줄을해야 내 수업

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

을 사용하려는 경우,이 읽어 보시기 바랍니다 (Transformers.aliasToBean (Transaction.class)). list(); 이 query1.list() 대신. –

답변

0

입니다 어디에 도움을

com.infotech.model.Transaction

에 저를 캐스팅 할 수 없습니다 그것을 (으)로 바꿔야한다. List<Transaction> list= (List<Transaction>)(List<?>) query1.list();

Java는 명시 적 유형 캐스팅에서 파생 유형을 기본 유형으로 변환해야합니다.

+0

죄송 합니다만, 제 실수를 고쳐 내지 못했습니다. –

0

여기에서 문제는 투영을 사용할 때 Hibernate가 List<Object[]> (List<Transaction>이 아님)을 반환한다는 것입니다.

가장 간단한 것은은 HQL 쿼리를 변경하는 단지 모든 것이 작동하는지 확인하는 것입니다

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

이 query1.setResultTransformer을 시도 돌기

SpringBoot+Hibernate+Restful : format response

관련 문제