如何通过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 数据库中更新、删除对象?

如何避免 Hibernate ValidationException 上的自动实体更新

如何在 Hibernate 中左加入获取多个孩子?

java 和 hibernate 比较

Hibernate Envers - 获取日期之间的修订和对象