String hql="select distinct workName from Test";Query q=this.session.createQuery(hql);
System.out.println("----------------------2");
List l=q.list();
System.out.println("----------------------3");
if(l.size()==0){
this.session.close();
return null;
}else{
Iterator iter=l.iterator();
if(iter.hasNext()){
l.add(iter.next());
}
this.session.close();
return l;
}输出
----------------------1
----------------------2
Hibernate: select distinct test0_.workName as col_0_0_ from test test0_报的错误是org.hibernate.exception.SQLGrammarException: could not execute query
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:2148)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
org.hibernate.loader.Loader.list(Loader.java:2024)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
com.hibernate.TestOperate.getColName(TestOperate.java:42)
org.apache.jsp.login_jsp._jspService(login_jsp.java:46)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:31)
大家帮帮忙,在网上查过很多,也向别人请教了,但都没结果

解决方案 »

  1.   

    我觉得你的HQL语句有问题把那个select去掉
      

  2.   

    去掉  distinct也不行??我感觉是distinct在作怪.
    你先试试简单的语句看是否报错:
    String hql="select t  from Test t"; 就这样试试
      

  3.   

    汗~~好象hql语句是面向对象的吧,不是我们平时写的sql语句啊,你只写 "from 类名"试试
      

  4.   

    你别的查询可以吗?根据报错,是SQL语法错误,但是我看了半天也没看出来SQL里有什么语法错误,所以怀疑是不是你的配置问题,这个环境下有没有可以运行的SQL?
      

  5.   

    String hql="select distinct workName from Test"; 换成  select t.distinct,t.workName from Test t  执行这个是返回一个Object的数组 而不是一个装对象的List
    你查询的时候指定了要查询的列 所以不会返回一个对象
      

  6.   

    你用的是Hql语句  不是Sql
      

  7.   

    语句改成"select distinct t.workName from Test t",楼上很多人说了,你是用hql,不是sql,查询语句是针对对象,而不是表,查的是对象的属性,不是表里面的字段,直接写workName,hibernate不知道你查的是哪个类的属性