1

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

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

我非常确定问题出在 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; 
}
4

2 回答 2

1

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

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

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

于 2012-12-01T16:22:36.037 回答
0

通过应用此代码解决的问题

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

于 2012-12-05T16:10:29.270 回答