如何通过Hibernate即时获取更新的对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Hibernate即时获取更新的对象?相关的知识,希望对你有一定的参考价值。
我没有得到hibernate会话检索的更新对象。例如如果我通过会话B更新对象[该对象早先已被会话A提取],那么我不会立即获得会话B所做的更新。
然后我将使用以下代码强制Hibernate获取更新的值。
session.evict(user);
但这涉及到数据库的往返。我怎么能避免这种情况?是否有更合适的方式立即获得更新?
答案
通过设计,hibernate会话(持久化上下文)彼此隔离,并保证可重复读取。
处理问题的更好方法是在会话A上调用session.refresh()如果您怀疑对象是陈旧的,而不是调用evict()和get()
另一答案
尝试使用刷新对象,
session.refresh(object, LockOptions.NONE)
它将从DB获得最新信息。
以上是关于如何通过Hibernate即时获取更新的对象?的主要内容,如果未能解决你的问题,请参考以下文章
企业框架源码 SpringMVC mybatis or hibernate ehcache二级缓存maven非和maven版本 websocket即时通讯
如何使用 Hibernate 从 Sql 数据库中更新、删除对象?