原先使用的是全部都是hibernate进行分页。完全可以实现然后后来增加功能,由于实现的原因,使用的jdbc进行实现的。使用jdbc添加了数据之后再用hibernate显示是页数出现错误。和实际条数不服。只会显示没用纯jdbc的那个数改怎么办

解决方案 »

  1.   

    代码太复杂了。。
    并且这不是代码的问题这样吧。有一个查询界面是所有的客户资料。。 用hibernate实现了分页然后有个导入,用的纯jdbc实现的。导入成功之后。这个页面不管怎么刷新。分页的地方,记录数页数都是导入之前的数。
      

  2.   

    和实际条数不服。只会显示没用纯jdbc的那个数 ,说明与缓存有关jdbc commit后肯定是插入数据库了,不知道你的显示部分hibernate是怎么用的,检查一下这部分,最简单的方法:打开调试,看看发送sql没有
      

  3.   

    jdbc 保存数据库后没有通知session进行flush呗,你在使用session查询前做一个session.flush();看看
      

  4.   

    我想原因肯定是 使用两种不同的方式操作是数据导致的。纯jdbc的插入了数据   hibernate能查出数据。但是就是条数不正确,只能是hibernate分页的地方的错误思路明确了。现在是hibernate的分页不是我做的。我刚接触。正在学,谢谢上面的解答。我挨着试试
      

  5.   

    纯JDBC不支持hibernate这种面向对象得查询语句吧难道你不用hibernate  能直接用  FROM  实体名  查询出数据吗?
      

  6.   

      呃 我的纯jdbc对数据库的操作只是向数据库中插入数据了我看着这堆代码很乱。。由于导入部分字段涉及太多东西。 并且当时时间以及环境的要求,就用的纯的jdbc纯的jdbc插入完成以后。其他的操作都使用的hibernate了现在改了一个地方  在hibernate分页的地方坐了修改。可以实现。但是有点小问题 正在调试
      

  7.   

    jdbc commit之后,要把hib的那个session刷新的。缓存问题。
      

  8.   

    session缓存问题吧,你试试清下缓存,重启一下次tomcat,再查看看有没有,如果有说明你分页查询没问题,你就在session前面加个刷新,要是还不对,就把你打印出来的sql语句放数据库里查,看看到底哪错了
      

  9.   

    自己写一个分页方法呢?
    这是我用的。jdbc和hibernate都适用package com.psit.struts.common;public class Page {
    /**
     * 当前页
     */
    private int currentPageNo;

    /**
     *下一页 
     */
    private int nextPageNo;

    /**
     * 上一页
     */
    private int prePageNo;

    /**
     * 第一页
     */
    private int firstPageNo; /**
     * 最后一页
     */
    private int lastPageNo;

    /**
     * 页大小
     */
    private int pageSize ;

    /**
     * 多少行
     */
    private int rowsCount;

    /**
     * 多少页
     */
    private int pageCount;

    /**
     * 初始化
     * @param rowsCount
     * @param pageSize
     */
    public Page(int rowsCount,int pageSize)
    {
    this.rowsCount = rowsCount;
    this.pageSize = pageSize;
    } public int getCurrentPageNo() {

    if(this.currentPageNo > this.getLastPageNo())
    {
    this.setCurrentPageNo(this.getLastPageNo());
    }
    if(this.currentPageNo < this.getFirstPageNo())
    {
    this.setCurrentPageNo(this.getFirstPageNo());
    }
    return currentPageNo;
    } public void setCurrentPageNo(int currentPageNo) {
    this.currentPageNo = currentPageNo;
    } /**
     * 获得下一页码
     * @return
     */
    public int getNextPageNo() {
    this.nextPageNo = this.currentPageNo + 1;

    if(this.nextPageNo>this.getPageCount())
    {
    this.nextPageNo = this.getPageCount();
    }
    return nextPageNo;
    } /**
     * 获得总页数
     * @return
     */
    public int getPageCount() {
    if(this.rowsCount % this.pageSize == 0)
    {
    this.pageCount = this.rowsCount / this.pageSize;

    }
    else
    {
    this.pageCount = (this.rowsCount / this.pageSize) + 1;
    }
    return pageCount;
    } /**
     * 获得前一页码
     * @return
     */
    public int getPrePageNo() {
    this.prePageNo = this.currentPageNo - 1;
    if(this.prePageNo <=0 )
    {
    this.prePageNo = 1;
    }
    return prePageNo;
    } /**
     * 获得第一页
     * @return
     */
    public int getFirstPageNo() {
    this.firstPageNo = 1;
    return firstPageNo;
    } /**
     * 获得最后一页
     * @return
     */
    public int getLastPageNo() {
    this.lastPageNo = this.getPageCount();
    return lastPageNo;
    } public int getPageSize() {
    return pageSize;
    } public int getRowsCount() {
    return rowsCount;
    } public void setPageCount(int pageCount) {
    this.pageCount = pageCount;
    }}