[Ljava.lang.Object; 无法施展

 手机用户2502916905 发布于 2023-02-11 19:12

我想从数据库中获取价值,在我的情况下,我用来List从数据库中获取值,但是我收到了这个错误

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to id.co.bni.switcherservice.model.SwitcherServiceSource
at id.co.bni.switcherservice.controller.SwitcherServiceController.LoadData(SwitcherServiceController.java:48)
at id.co.bni.switcherservice.controller.SwitcherServiceController.main(SwitcherServiceController.java:62)

这是我的代码

    Query LoadSource = session_source.createQuery("select CLIENT,SERVICE,SERVICE_TYPE,PROVIDER_CODE,COUNT(*) FROM SwitcherServiceSource" +
            " where TIMESTAMP between :awal and :akhir" +
            " and PROVIDER_CODE is not null group by CLIENT,SERVICE,SERVICE_TYPE,PROVIDER_CODE order by CLIENT,SERVICE,SERVICE_TYPE,PROVIDER_CODE");
    LoadSource.setParameter("awal", fromDate);
    LoadSource.setParameter("akhir", toDate);

    List result_source = (List) LoadSource.list();
    for(SwitcherServiceSource tes : result_source){
        System.out.println(tes.getSERVICE());
    }

任何帮助都会很愉快:)

@raffian,你的意思是这样吗?

List result = (List) LoadSource.list();
for(Switcher tes : result){
    System.out.println(tes.getSERVICE());
}

Aniket Kulka.. 42

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to id.co.bni.switcherservice.model.SwitcherServiceSource

问题是

(List) LoadSource.list();

这将返回一个Object of Array数组(Object []),其中包含SwitcherServiceSource表中每列的标量值.Hibernate将使用ResultSetMetadata来推断返回的标量值的实际顺序和类型.

List result = (List) LoadSource.list(); 
Iterator itr = result.iterator();
while(itr.hasNext()){
   Object[] obj = (Object[]) itr.next();
   //now you have one array of Object for each row
   String client = String.valueOf(obj[0]); // don't know the type of column CLIENT assuming String 
   Integer service = Integer.parseInt(String.valueOf(obj[1])); //SERVICE assumed as int
   //same way for all obj[2], obj[3], obj[4]
}


相关链接

使用迭代器


Gleb S.. 5

我已经遇到了这样的问题,并且挖掘了材料的语气。因此,为避免难看的迭代,您可以简单地调整hql:

您需要像这样构造查询

select entity from Entity as entity where ...

还要检查这种情况,对我来说非常合适:

public List findByRole(String role) {

    Query query = sessionFactory.getCurrentSession().createQuery("select user from User user join user.userRoles where role_name=:role_name");
    query.setString("role_name", role);
    @SuppressWarnings("unchecked")
    List users = (List) query.list();
    return users;
}

因此,这里我们从查询中提取对象,而不是一堆字段。而且看起来也更漂亮。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有