public List selectRegistra(String name){
    
     String hql="select v.courseid,r.coursename,v.starttime  from " +
     "(select c.courseid,c.coursename,c.starttime from Course c where c.name=:name) v,Regist r " +
     "where c.coursename=r.coursename";
Query query = this.getHibernateTemplate().getSessionFactory()
.getCurrentSession().createQuery(hql);
query.setString("name", name);
List list = query.list();



     return list;
    }报错:
(84512 ms) [http-80-1] ERROR: org.hibernate.hql.PARSER#reportError : line 1:50: unexpected token: (

解决方案 »

  1.   

    String hql="select v.courseid,r.coursename,v.starttime  from " + 
        "(select c.courseid,c.coursename,c.starttime from Course c where c.name=:name) v,Regist r " + 
        "where c.coursename=r.coursename"; 把c换成v看看呢
      

  2.   

    是这条语句。。上面那句弄错了
    String hql="select count(r.registid),c.courseid,c.courseid,c.coursename,c.starttime " +
         " from (select courseid,coursename,starttime from Course where name=:name) c,Regist r where c.coursename=r.coursename" +
         " group by c.courseid,c.coursename,c.starttime";
      

  3.   

    这条一查就报错
         String hql="select count(r.registid),c.courseid,c.courseid,c.coursename,c.starttime " +
         " from (select courseid,coursename,starttime from Course where name='d') c,Regist r where c.coursename=r.coursename" +
         " group by c.courseid,c.coursename,c.starttime";
     ERROR: org.hibernate.hql.PARSER#reportError : line 1:79: unexpected token: (而这条就不会 String hql="select count(r.registid),c.courseid,c.courseid,c.coursename,c.starttime " +
         " from Course c,Regist r where c.coursename=r.coursename" +
         " group by c.courseid,c.coursename,c.starttime";
    这什么原因呀
      

  4.   

    String hql="select count(r.registid),c.courseid,c.courseid,c.coursename,c.starttime " + 
        " from (select courseid,coursename,starttime from Course where name='d') c,Regist r where c.coursename=r.coursename" + 
        " group by c.courseid,c.coursename,c.starttime"; 
    (select courseid,coursename,starttime from Course where name='d') c这里你把结果集作为对象与Regist 关联,但是c这个对象是什么呢?莫名。你这种典型的就是sql写法的想法。有一点要记住,hql里面永远找的都是以完成持久化的实体,建议你直接使用sql完成上面的语句吧