• java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem异常


    今天一不小心就碰到了这样的问题,以前从来没有碰到过,在网上搜了很多办法,思路正确,但是还是要根据自己的程序改变。

     一开始写的是hql语句进行统计每个月的数据,但是试了很久,程序一直提醒hql语句异常,没办法,只能修改查询语句了,就改成了sql语句进行统计。

     错误就由此产生了,一发不可收拾啊:

     java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem这个异常解决办法很简单,首先要弄懂

    hibernate中createQuerycreateSQLQuery 的区别:

    前者用的hql语句进行查询,后者可以用sql语句查询
    前者以hibernate生成的Bean为对象装入list返回
    后者则是以对象数组进行存储
    所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,就不是很方便
    不过createSQLQuery有这样一个方法可以直接转换对象
    Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class)
    XXXXXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean

     hql语句:对每个月的数据进行统计
     String hql = "select sum(sto_Sum) , sum(sto_SumPrice) ,sum(sto_SaleNum) ,sum(sto_SaleNum*sto_SalePrice) from Stock  WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( addDate, '%Y%m' ) ) =1";
                Query query = session.createSQLQuery(hql).addEntity(Stock.class);//关键步骤
                list = query.list();
     

    所以问题归根纠结于就是类型不匹配,无法进行转换,问题就这样解决了!!!

  • 相关阅读:
    httpclient 5.0 设置超时时间
    httpclient raw请求
    使用EasyUI-datagrid-export.js导出Excel,不导出隐藏列
    ExpressSet 虚拟适配器
    中断模式队列
    autohotkey 线程入门
    读rbtree
    树莓派串口
    MCP3421使用详解
    PMOS开关电路
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/10617663.html
Copyright © 2020-2023  润新知