发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

为什么hibernate得不到实时更新的数据

2006-07-20 00:02
赞助商链接

举个部门、员工、角色的问题。
EmployeeDAO empdao = new EmployeeDAO();
Employee emp = empdao.getEmployeeById(Long.parseLong(request.getParameter("empid")),true);
long roleid = Long.parseLong(o.toString());
Role role = new RoleDAO().getRoleById(roleid,false);
emp.setRole(role);
empdao.makePersistent(emp);
在用以上代码更新某个员工的角色后,跳到一个显示页面,代码如下,显示一个部门的员工角色,
<logic:iterate id="emp" name="dept" property="employees">
${emp.name}--${emp.role.description}
</logic:iterate>
但以上显示老是会出现错误。比如我把某三个本来是“员工”的角色改成“主管”,然后每刷新一次页面,这三个人的角色都会变,时而是“员工”,时而是“主管”。但数据库里这三个人的角色都已经是“主管”了。要过一段时间才会正确显示数据库中的数据。
这到底是什么问题。麻烦大家解答一下。
谢谢!

2006-07-24 18:02

缓存,保存时使用flush

2006-08-01 22:56

这是因为需要对session的缓存进行清理,当你清理后对数据的操作才会被更新!清理缓存的时间点有以下几种情况:

当应用程序调用net.sf.hibernate.Transaction的commit()方法的时候,commit()方法先清理缓存,然后再向数据库提交事务。

当应用程序调用Session的find()或者iterate()时,如果缓存中持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。

当应用程序显式调用Session的flush()方法的时候。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com