各位帮帮忙,最近用orcale出现的错误,select * from (select * from db_portals where pro_id= 1 order by opertime desc) where rownum <=4;
这个是orcale语句,里层控制根据id查询,根据编写日期倒叙,外层控制只提取前四条语句。测试后语句无错。from (from DbPortals dp where dp.dbPrograma.proId = 1 order by dp.opertime desc) where rownum <=4
这条是改成HQL后的语句。org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: 
( near line 1, column 6 
[from (from com.hanqian.pojo.DbPortals dp where dp.dbPrograma.proId = 1 order by dp.opertime desc) where rownum <=4;]; 
nested exception is org.hibernate.hql.ast.QuerySyntaxError: unexpected token:
 ( near line 1, column 6 [from (from com.hanqian.pojo.DbPortals dp where dp.dbPrograma.proId = 1 order by dp.opertime desc) where rownum <=4取下来错误消息大概就是这个情况,测试后内层查询无错,就是外层控制条数的加上就报错啦。
希望大家帮忙给看看。

解决方案 »

  1.   

    from DbPortals 是不是错了?应该是db_portals吧?
      

  2.   

    是HQL不能识别rownum,既然使用了HQL,那就用Hibernate的分页来控制吧。Query query = session.createQuery("hql语句放到这里"); 
    query.setFirstResult(这里填写开始记录数); 
    query.setMaxResult(这里填写每页记录数); 
    reutrn query.list(); 
      

  3.   


    不会啊 ,转换成hql语句是,查找的是数据库映射过来的对象,这个没问题。