错误发生地点:
Criteria criter = criteria.setFirstResult(startIndex).setMaxResults(pageSize);
List list = criter.list();
环境:Struts2 + Spring 2.5 + hibernate3.2 数据库Sql server2000 sp4补丁
问题:
    为什么每当我代码执行到 List list = criter.list(); 就会报如下错误!我知道问题出现在 GAMESERVICE_LIST this_ limit ? 但是为什么我直接调用 criter.list()会出现limit呢?很是奇怪! 希望有好心人能帮我看看!解释下原因! 万分感谢
日志:
Hibernate: select this_.id as id1_0_, this_.serv_charge_type as serv2_1_0_, this_.serv_confirm_url as serv3_1_0_, this_.serv_date as serv4_1_0_, this_.serv_deploy_server as serv5_1_0_, this_.serv_every_price as serv6_1_0_, this_.serv_fee_type as serv7_1_0_, this_.serv_fee_url as serv8_1_0_, this_.serv_free_url as serv9_1_0_, this_.serv_index_url as serv10_1_0_, this_.serv_price as serv11_1_0_, this_.serv_product_id as serv12_1_0_, this_.serv_id as serv13_1_0_, this_.serv_name as serv14_1_0_, this_.serv_status as serv15_1_0_, this_.serv_sid as serv16_1_0_, this_.serv_spid as serv17_1_0_ from GAMESERVICE_LIST this_ limit ?
2010-01-02 01:40:10,625 WARN [org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:100)] - <SQL Error: 170, SQLState: 37000>
2010-01-02 01:40:10,734 ERROR [org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:101)] - <第 1 行: 'limit' 附近有语法错误。>
2010-01-02 01:40:10,812 WARN [org.hibernate.util.JDBCExceptionReporter.logWarnings(JDBCExceptionReporter.java:77)] - <SQL Warning: 170, SQLState: 37000>
2010-01-02 01:40:10,859 WARN [org.hibernate.util.JDBCExceptionReporter.logWarnings(JDBCExceptionReporter.java:78)] - <Preparing the statement failed: 第 1 行: 'limit' 附近有语法错误。>

解决方案 »

  1.   

    criteria.setFirstResult(startIndex);
    criteria.setMaxResults(pageSize); 
      

  2.   

    limit是MySQL数据库上用的。Sql server 2000没有这个关键词。
    也就是说,配置Hibernate时,方言需要指定SQLServerDialect
      

  3.   

    this.getSession().createQuery(hql).setFirstResult(startIndex).setMaxResults(pageSize).list();我分页中的一段,不知道知否有帮助。
      

  4.   

    是的,你的方言指定的是mysql,分页时候用的limit