Hibernate 在java中,我在获取列表时获取ClassCastExceptin,因为返回的是非托管实体
当我使用foreach循环进行迭代时,我得到ClassCast异常。我不知道为什么Hibernate 在java中,我在获取列表时获取ClassCastExceptin,因为返回的是非托管实体,hibernate,Hibernate,当我使用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_d
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;
}
和错误一样
严重:Servlet[dispatcher]的Servlet.service在上下文中与
路径[/hello]引发异常[请求处理失败;嵌套
异常为java.lang.ClassCastException:[Ljava.lang.Object;无法
使用根本原因强制转换到com.my.models.MailData]
java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为
com.my.models.MailData位于
java:44
在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法中
有人能解决吗?谢谢
最后,我使用查询得到了解决方案:
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();
不使用addScalar,您可以执行以下操作:
List<MailData> listMailData = getSession().createSQLQuery(strqry)
.addEntity(MailData.class)
.list();
感谢,addEntity也是一个很好的解决方案。新的AddScalar在Hibernate 5中被删除了。list也被删除了。您可以将其更新为.getResultList。