java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem这个异常解决办法很简单,首先要弄懂
hibernate中createQuery与createSQLQuery 的区别:
前者用的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();