我编写了从数据库中获取数据的代码。
当用户点击链接时,会调用以下操作。它第一次给我正确的数据。但是如果管理员更新表数据。然后,下面的代码无法显示表中新更新的数据。如果我多次刷新页面,那么它会显示新更新的数据。但是在下次刷新之后再次显示旧数据。
我非常确定问题出在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;
}
答案 0 :(得分:1)
尝试添加专用提交而不是刷新。关闭会话时,可能Hibernate不会立即提交。
您还应尝试在一个事务中读取所有数据。根据您的代码,您为每次调用DAO打开一个会话。将会话重新用于属于一起的呼叫。
我强烈建议让您的基础架构为您打开,关闭和提交会话。考虑使用注释驱动的方法,例如
答案 1 :(得分:0)
应用此代码解决了问题
sessionFactory.close();
tx.commit();
session.close();