в Java, я получаю ClassCastExceptin во время получения списка <MailData>из-за возврата неуправляемых объектов - PullRequest
0 голосов
/ 29 сентября 2018

когда я выполняю итерацию с использованием цикла foreach, я получаю исключение ClassCast.я не знаю почему?

public List<MailData> getAllMailData() {
 String strqry="select c.created_time as created_time, c.hangup_time as hangup_time, c.direction as direction ,
     c.sip_endpoint_disposition as sip_endpoint_disposition, v.cid_number as cid_number, v.in_folder as in_folder, 
     v.message_len as message_len,v.read_flags as read_flags, v.username as username from onyxcxm_db.cdr c  
     inner join onyxcxm_db.mail_msgs v on c.orig_id=v.uuid";    

 List<MailData> listMailData = (List<MailData>)getSession().createNativeQuery(strqry).list();

   for(MailData md:listMailData){
    System.out.println(md.getcreated_time);  //line 44
       }
        getSession().flush();
    return listvoiceMailData;   
}

и ошибка типа

SEVERE: Servlet.service () для сервлета [dispatcher] в контексте с путем [/ hello] вызвало исключение [Ошибка обработки запроса;Вложенным исключением является java.lang.ClassCastException: [Ljava.lang.Object;невозможно привести к com.my.models.MailData] с первопричиной java.lang.ClassCastException: [Ljava.lang.Object;не может быть приведен к com.my.models.MailData по адресу com.neron.daoImpl.MailDataDaoImpl.getAllMailData (MailDataDaoImpl.java:44) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) Может ли кто-нибудь решить эту проблему?Спасибо ..

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Вместо использования addScalar вы можете сделать это:

List<MailData> listMailData = getSession().createSQLQuery(strqry)
.addEntity(MailData.class)
.list();
0 голосов
/ 29 сентября 2018

Наконец, я получаю решение с помощью запроса:

Query query = getSession().createSQLQuery(strqry)  
             .addScalar("created_time", new StringType())      
             .addScalar("hangup_time", new StringType())  
             .addScalar("direction", new StringType())      
             .addScalar("sip_endpoint_disposition", new StringType())  
             .addScalar("cid_number", new StringType())      
             .addScalar("in_folder", new StringType())  
             .addScalar("read_flags", new StringType())      
             .addScalar("username", new StringType())  
             .addScalar("username", new StringType())  
             .setResultTransformer(Transformers.aliasToBean(MailData.class));

     List<MailData> listMailData = query.getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...