unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法
2017-09-15 14:16
676 查看
一、unexpected token: * 的解决办法
首先要搞清楚sql与hql的区别!
sql操作的是数据库表,而hql操作的是对象!
sql中“select * from table”,而hql中" from table对象"!
因为sql用惯了,习惯*,但是hql不认识!
试试:直接 from 对象看看!
办法:String hql = "from KmToolclickCnt where 1=1 ";
上面采用注释的那段就会报 unexpected token: * 的错误。采用下面的就可以了。
同时注意:先获取到 list ,再return list里面的某个对象。不这样做的话,也会报一些其他的错误。
二、java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.vrv.paw.domain.GenuineManagementStatic解决方法:
这样就会报上面的异常。
hibernate中createSQLQuery与createQuery的区别:
前者用的hql语句进行查询;后者可以用sql语句查询
前者以hibernate生成的Bean为对象装入list返回;后者则是以对象数组进行存储
所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,就不是很方便,不过createSQLQuery有这样一个方法可以直接转换对象
Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class) XXXXXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean
所以问题归根纠结于就是类型不匹配,无法进行转换,问题就这样解决了!!!
我的项目中使用下面注释的内容,即会显示正确了。所以这两个问题,通常关联出现,记录学习一下啦。
首先要搞清楚sql与hql的区别!
sql操作的是数据库表,而hql操作的是对象!
sql中“select * from table”,而hql中" from table对象"!
因为sql用惯了,习惯*,但是hql不认识!
试试:直接 from 对象看看!
办法:String hql = "from KmToolclickCnt where 1=1 ";
@Override public GenuineManagementStatic queryNewVersion(Integer softId) { /*return (GenuineManagementStatic) getSession().createQuery(" select * from vrv_paw_genuineManagementStatic where softId=:softId order by version desc LIMIT 0,1 ") .setParameter("softId", softId).uniqueResult();*/ List<GenuineManagementStatic> list = getSession().createQuery(" from " + this.clazz.getName() + " this WHERE this.softId=:softId order by version desc LIMIT 0,1") .setParameter("softId", softId) .list();//返回list集合 if (list.size() > 0) { return list.get(0);//返回list集合里第一个对象 } return null; }
上面采用注释的那段就会报 unexpected token: * 的错误。采用下面的就可以了。
同时注意:先获取到 list ,再return list里面的某个对象。不这样做的话,也会报一些其他的错误。
二、java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.vrv.paw.domain.GenuineManagementStatic解决方法:
@Override public GenuineManagementStatic queryNewVersion(Integer softId) { return (GenuineManagementStatic) getSession().createSQLQuery(" select * from vrv_paw_genuineManagementStatic where softId=:softId order by version desc LIMIT 0,1 ") .setParameter("softId", softId).uniqueResult(); /*List<GenuineManagementStatic> list = getSession().createQuery(" from " + this.clazz.getName() + " this WHERE this.softId=:softId order by version desc LIMIT 0,1") .setParameter("softId", softId) .list(); if (list.size() > 0) { return list.get(0); } return null;*/ }
这样就会报上面的异常。
hibernate中createSQLQuery与createQuery的区别:
前者用的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();
所以问题归根纠结于就是类型不匹配,无法进行转换,问题就这样解决了!!!
我的项目中使用下面注释的内容,即会显示正确了。所以这两个问题,通常关联出现,记录学习一下啦。
相关文章推荐
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to XXX解决
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to xxx
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xdcjc.model.D_Users
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;
- 错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- 关于使用动态代理创建代理对象是报错 java.lang.ClassCastException: $Proxy0 cannot be cast to 的解决办法
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to ]
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 问题
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- 十、java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to xxx.action.entity.Category
- java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView解决办法
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.Map
- Validator问题及解决办法——java.lang.ClassCastException: org.apache.struts.validator.ValidatorForm cannot be cast to forms.RegisterForm
- 关于java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object的错误报告
- Hibernate:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to co