一、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 解决办法的更多相关文章

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

    今天一不小心就碰到了这样的问题,以前从来没有碰到过,在网上搜了很多办法,思路正确,但是还是要根据自己的程序改变. 一开始写的是hql语句进行统计每个月的数据,但是试了很久,程序一直提醒hql语句异常, ...

  2. 关于java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 实体类

    由于业务逻辑的复杂,有些sql语句写法hql不支持,所以hibernate查询直接用了sql原生查询,由于数据结果根据四个表查询出来,所以无法使用方法.addEntity(XXXXXXX.class) ...

  3. 报错: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 代 ...

  4. java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView

    最近在学习drawerLayout时,遇到这个bug.如下示: java.lang.ClassCastException: android.widget.RelativeLayout cannot b ...

  5. 关于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 ...

  6. 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; ...

  7. 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 ...

  8. 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 ...

  9. 安卓出现错误: 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 ...

随机推荐

  1. XINCLUDE

    前言 导入外部xml文档,类似于php的include,将外部定义的dtd引入当前文件,因为引入外部实体具有局限性,所以使用xinclude来引入 语法 导入外部文档: <xi:include ...

  2. MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址

    MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址 注意:已经下载过MAC OS 10.10.5虚拟机免费下载(可安装Xcode7)链接:http://www.cnblogs ...

  3. android studio 汉化 美化 个性化 修改 安卓工作室 2.3.3 最新版

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 先看一下效果. 建议全屏看图,或者新标签看图.

  4. 「WC2010」重建计划(长链剖分/点分治)

    「WC2010」重建计划(长链剖分/点分治) 题目描述 有一棵大小为 \(n\) 的树,给定 \(L, R\) ,要求找到一条长度在 \([L, R]\) 的路径,并且路径上边权的平均值最大 \(1 ...

  5. Android签名有什么作用?

    应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名.这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序.如果你采用了不同的证书,那么系统会要求你的应用程序采用不同 ...

  6. django-附件上传、media、extra、事务

    1 普通上传 1.1 html <form action="/index/" method="post" enctype="multipart/ ...

  7. [bzoj1024][SCOI2009]生日快乐 (枚举)

    Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一 个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的 ...

  8. Effective Java部分读书笔记

    2.创建和销毁对象 1.使用静态工厂方法代替构造器 一般使用构造器(构造函数)创建对象实例,还可以使用静态工厂方法来创建对象实例. 优点 使用静态工厂方法代替构造器创建对象实例有以下优点: 1)静态构 ...

  9. Android消息机制——Handler

      /**android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个MessageQueue(消息队列), * 但是MessageQueue被封装到Looper里 ...

  10. 1089 Intervals(中文版)

    开始前先讲几句废话:这个题我开始也没看懂,后来借助百度翻译,明白了大概是什么意思. 试题描述 输入一个n,然后输入n组数据,每个数据有两个数,代表这个闭区间是从几到几.然后看,如果任意两个闭区间有相重 ...