无法从数据库中获取正确的数据

时间:2012-12-01 14:45:25

标签: java struts2

我编写了从数据库中获取数据的代码。

当用户点击链接时,会调用以下操作。它第一次给我正确的数据。但是如果管理员更新表数据。然后,下面的代码无法显示表中新更新的数据。如果我多次刷新页面,那么它会显示新更新的数据。但是在下次刷新之后再次显示旧数据。

我非常确定问题出在dao上,或者可能属于Action类。我不知道这背后的问题是什么? 请帮我解决这个问题。

BookdetailsDAO.java

    public   List findasc(int o,int l)
{
     List list = null;

        try {
             session = HibernateUtil.getSessionFactory().openSession(); 
             Query q1 = session.createQuery("FROM Bookdetails  ORDER BY authLastname ASC");
             q1.setFirstResult(o);
             q1.setMaxResults(l); 
            list =q1.list(); 
        } catch (Exception e) {
            System.out.println("Exception in  findasc()  :" + e);
        } finally {
            try {
                 session.flush();
                session.close();
            } catch (Exception e) {
                System.out.println("Exception In findasc Resource closing  :" + e);
            }
        } 
        return list; 
}

2 个答案:

答案 0 :(得分:1)

尝试添加专用提交而不是刷新。关闭会话时,可能Hibernate不会立即提交。

您还应尝试在一个事务中读取所有数据。根据您的代码,您为每次调用DAO打开一个会话。将会话重新用于属于一起的呼叫。

我强烈建议让您的基础架构为您打开,关闭和提交会话。考虑使用注释驱动的方法,例如

答案 1 :(得分:0)

应用此代码解决了问题

sessionFactory.close(); tx.commit();
session.close();