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: (
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: (
"(select c.courseid,c.coursename,c.starttime from Course c where c.name=:name) v,Regist r " +
"where c.coursename=r.coursename"; 把c换成v看看呢
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";
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";
这什么原因呀
" 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完成上面的语句吧