使用Hibernate调用MySQL存储过程时,分页不起作用

时间:2013-02-09 05:47:37

标签: java spring hibernate hibernate-mapping

我有一个MySQL存储过程click here for stored procedure并使用Hibernate调用过程

Hibernate代码:

int ps=5;

    SQLQuery query=session2.createSQLQuery("CALL AbsentReportproc(:_fromdate,:_todate)");
            query.setParameter("_fromdate", fromdate);
            query.setParameter("_todate", todate);
            query.setFirstResult(ps*(pno-1));
            query.setMaxResults(ps);
             List<Object[]> empList=query.list();

当我执行上面的代码时,我显示以下错误消息:

org.hibernate.exception.SQLGrammarException: could not execute query
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 5' at line 1

注意:如果我从代码中删除以下语句,我会在一个jsp页面中显示所有记录

query.setMaxResults(PS);

任何人都可以给我解决问题是什么?

感谢...

1 个答案:

答案 0 :(得分:0)

这显然是您正在使用的jdbc驱动程序错误;

也可以使用setFetchSize尝试此操作,如果这也不起作用,

我建议如果你想全部显示它们并且没有太多数据,那么不要在块中查询详细信息,而是应该存储所有数据而不将此方法query.setMaxResults(ps);调用到集合中

当您想在页面中显示该数据时,如果您使用subList,请获取List,以便在应用程序级别中断数据,然后将其显示在{{1}的视图上{1}}在这种情况下。