程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用休眠分页大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用休眠分页?

开发过程中遇到使用休眠分页的问题如何解决?下面主要结合日常开发的经验,给出你关于使用休眠分页的解决方法建议,希望对你解决使用休眠分页有所启发或帮助;

使用DB2作为后端系统,DB2中有大量数据,所以想使用分页。

    query query = sessionObj.createquery(sqlquery);
    
    int pageNumber = 1;
    int pageSize = 100;
    query countquery = sessionObj.createquery("select count(ID) FROM Employe");
    Long countResults = (Long) countquery.uniqueResult();
    
     while (pageNumber < countResults.intValue()) {
         
         query.setFirstResult(pageNumber - 1);
         query.setMaxResults(pageSize);
         System.out.println(query.getqueryString());
         query.List();
         pageNumber += pageSize;
         System.out.println("==========================");
     }      

使用上述方法,获得异常

org.hibernate.exception.sqlGrammarException: 无法提取 结果集在 org.hibernate.exception.internal.sqlExceptionTypeDelegate.convert(sqlExceptionTypeDelegate.java:80) 在 org.hibernate.exception.internal.StandardsqlExceptionConverter.convert(StandardsqlExceptionConverter.java:49) 在 org.hibernate.engine.jdbc.spi.sqlExceptionHelper.convert(sqlExceptionHelper.java:126) 在 org.hibernate.engine.jdbc.spi.sqlExceptionHelper.convert(sqlExceptionHelper.java:112) 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:89) 在 org.hibernate.loader.Loader.getResultSet(Loader.java:2065) 引起 作者:com.ibm.db2.jcc.am.sqlSyntaxErrorException:DB2 sql 错误: sqlCODE=-199,sqlSTATE=42601,sqlERRMC=OF;ROWS * AT YEAR YEARS MONTH MONTHS DAY DAYS HOURS MINUTE,DRIVER=4.21.29

HQL:Hibernate 生成的查询。如果我在 sql 客户端执行相同的获取 同样的错误。

select * from ( select inner2_.*,rownumber() over(order by order of inner2_) 作为 rownumber_ from(select Employee employee0_ where 雇员0_.Dept='5' 由雇员0_.DEPTH、雇员0_ .name、 employee0_.salary DESC) as inner2_ ) as inner1_ where rownumber_ > 100 按行号排序_

当我们保留 over() 而不是 over(order by order of inner2_) 时,sql 客户端中的查询会成功执行。

。有没有办法在执行之前在java中更改休眠生成的查询?

查询查询 = sessionObj.createquery(sqlquery); int pageSize = 10;

    ScrollableResults resultScroll = query.scroll(ScrollMode.FORWARD_ONLY);
    resultScroll.first();
    resultScroll.scroll(0);
    List<BaseReport> fooPage = new ArrayList();
    int i = 0;
    while (pageSize > i++) {
        fooPage.add((BaseReport) resultScroll.get(0));
        if (!resultScroll.next())
            break;
    }

也试过这种方法:

org.hibernate.exception.GenericJDBCException:无法使用 第一个()在 org.hibernate.engine.jdbc.spi.sqlExceptionHelper.convert(sqlExceptionHelper.java:126) 在 org.hibernate.engine.jdbc.spi.sqlExceptionHelper.convert(sqlExceptionHelper.java:112) 在 org.hibernate.internal.ScrollableResultsImpl.first(ScrollableResultsImpl.java:95) 在 com.ericcson.internal.utility.HibernateUtility.executequeryTest2(HibernateUtility.java:123) 在 com.eriCSSon.internal.vIEw.DAPBreakdownReportVIEw.generateReport(DAPBreakdownReportVIEw.java:39) 在 com.eriCSSon.internal.builder.Responseviewbuilder.getResponseVIEw(Responseviewbuilder.java:27) 在 com.ericcson.internal.impl.ReportGeneration.createReport(ReportGeneration.java:47) 在 com.ericcson.internal.utility.Sample2.main(Sample2.java:32) 引起 作者:com.ibm.db2.jcc.am.sqlException:[jcc][t4][10179][10900][4.21.29] 此方法应该只在 ResultSet 对象上调用 可滚动(类型 TYPE_SCRolL_SENSITIVE 或 TYPE_SCRolL_INSENSITIVE)。 ERRORCODE=-4476,sqlSTATE=null

需要在查询中使用 order by 才能从 DB 获取某些特定订单

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用休眠分页全部内容,希望文章能够帮你解决使用休眠分页所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: