我要在SSH框架中  从sqlserver中查询前十行的数据    Session session = this.getSession();
    String sql="select top 10 * from UserInfoTable order by userID";
   List list=session.createQuery(sql).list();
      这样一直出异常  请问Hibernate 查询语句中能这样写吗?
   “select sum(userID) from UserInfoTable ”这样可以 为什么上面的不行

解决方案 »

  1.   

    top 10 是Oracle中才支持的吧,mysql中只要在where前面加个limit 0,10就可以查前10条,你查sqlserver不知道在where前面加limit 0,10可不可以,不行了话,就去查查sqlserver查前10条的写法.
      

  2.   

    SELECT top 10 * FROM UserInfoTable ORDER BY userID()try this one~
      

  3.   

    改成
    select top 10 * from UserInfoTable u order by u.userID
    确定UserInfoTable 是类名 userID是属性名称...
    要不你用createSqlQuery那个方法...
      

  4.   

    使用 hql 查询 的话 似乎不支持top n 查询
       如果使用sql 的话 要看 数据库的类型
       mssql 支持 top n   
       mysql 不支持, 使用limit n,m 语句 (1楼 提到)
      

  5.   

    Hibernate里有现在的分页的方法的呀. query.setFirstResult(start);
    query.setMaxResults(pageSize);
      

  6.   

    为什么不用hibernate的分页查询??
    list = session.creatQuery(查询语句).setFirstResult(开始位置).setMaxResults(要查询的总记录数).lis();
      

  7.   

    是呀,HIBERNATE分页是可以实现的。
      

  8.   


    oracle中就没有top ,而可以用 where rownum<=10可以得到前10条记录.
    sql server中才有top.在SQL Server中可以用select top 10 from 表名.得到前10条记录.
    mysql中用limit 0,10就可以得到前10条了.
      

  9.   

    Session session = this.getSession(); 
        String sql="select {s.(top 10 *)} from UserInfoTable s order by s.userID"; 
       List list=session.createSQLQuery(sql).addEntity("s",UserInfoTable).list(); 
    这样应该行 了吧
      

  10.   

    就是你的方法用错了
    createSQLQuery()执行sql 语句的方法
    createQuery()好像只能执行HQL 语句