unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法
一、unexpected token: * 的解决办法
首先要搞清楚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() > ) {
return list.get();//返回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();
所以问题归根纠结于就是类型不匹配,无法进行转换,问题就这样解决了!!!
我的项目中使用下面注释的内容,即会显示正确了。所以这两个问题,通常关联出现,记录学习一下啦。
unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法的更多相关文章
- java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem异常
今天一不小心就碰到了这样的问题,以前从来没有碰到过,在网上搜了很多办法,思路正确,但是还是要根据自己的程序改变. 一开始写的是hql语句进行统计每个月的数据,但是试了很久,程序一直提醒hql语句异常, ...
- 关于java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 实体类
由于业务逻辑的复杂,有些sql语句写法hql不支持,所以hibernate查询直接用了sql原生查询,由于数据结果根据四个表查询出来,所以无法使用方法.addEntity(XXXXXXX.class) ...
- 报错:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xxx.entity.PersonEntity
报错:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xxx.entity.PersonEntity 代 ...
- java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
最近在学习drawerLayout时,遇到这个bug.如下示: java.lang.ClassCastException: android.widget.RelativeLayout cannot b ...
- 关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serializa ...
- Java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
今天接入激光推送,一直报错: Java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker; ...
- java.lang.ClassCastException: oracle.sql.CLOB cannot be cast to oracle.sql.CLOB
错误现象: [framework] 2016-05-26 11:34:53,590 -INFO [http-bio-8080-exec-7] -1231863 -com.dhcc.base.db.D ...
- java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to android.widget.Ed ...
- 安卓出现错误: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to android.widget.Ed ...
随机推荐
- [GYM 100492A] Average Convex Hull 凸包好题
大致题意: 给出一个点集,其中有一个点有相同的几率会被删除,求删除之后的点集够成的凸包上的点的平均数. 首先看到题目,可以考虑枚举删除的点,将其凸包上前后两点以及两点间凸包内所有点构建凸包,因为凸包内 ...
- HDU 6201 transaction transaction transaction(树形DP)
transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/1 ...
- cinder 挂载卷和 iSCSI原理
LVM名称介绍 PV:物理磁盘 VG:卷组,多个PV可以组成一个VG,一个VG可以划分成多个LV(逻辑卷). PP:物理区块,将一个VG逻辑的划分成连续的小块. LP:逻辑区块,若干个PP组成一个LP ...
- 初探 Spring Boot
近些年Spring Boot都特别火,一直都想来学习学习,奈何近期公司项目繁忙,一直都没有时间来学习,今天终于是休息一天,于是来一睹 SpringBoot 的风采. 一.什么是Spring Boot ...
- Educational Codeforces Round 43 (Rated for Div. 2) ABCDE
A. Minimum Binary Number time limit per test 1 second memory limit per test 256 megabytes input stan ...
- BZOJ 1030 [JSOI2007]文本生成器(AC自动机)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1030 [题目大意] 求出包含任意一个给定串的串数量 [题解] 我们求出不包含任意一个给 ...
- windows远程连接Ubuntu12.04 (Ubuntu14.0连接方式不一样)
参考 http://www.cnblogs.com/jerome-rong/archive/2012/08/16/2642035.html 有两种方式:Vnc方式(优缺点)和xrdp模式 中提到的Vn ...
- MySql - GROUP BY 和 HAVING关键字
本文主要针对GROUP BY 和 HAVING两个关键字进行分析 使用测试表如下: 测试前,只知道GROUP BY 这个关键字的作用是根据一个字段进行分组,去重.HAVING对分组设置条件. 具体分组 ...
- 两个函数彻底理解Lua中的闭包
本文通过两个函数彻底搞懂Lua中的闭包,相信看完这两个函数,应该能理解什么是Lua闭包.废话不多说,上 code: --[[************************************** ...
- Codeforces Beta Round #6 (Div. 2 Only) B. President's Office 水题
B. President's Office 题目连接: http://codeforces.com/contest/6/problem/B Description President of Berla ...