如何通过Hibernate即时获取更新的对象?

时间:2013-03-13 16:52:26

标签: database hibernate orm object-relational-model

我没有获得hibernate会话检索到的更新对象。例如如果我通过会话B更新对象[该对象早先已被会话A提取],那么我不会立即获得会话B所做的更新。

然后我将使用以下代码强制Hibernate获取更新的值。

session.evict(user);

但这涉及到数据库的往返。我怎么能避免这种情况?是否有更合适的方式立即获得更新?

2 个答案:

答案 0 :(得分:0)

通过设计,hibernate会话(持久化上下文)彼此隔离,并保证可重复读取。

处理问题的更好方法是在会话A上调用session.refresh(),如果您怀疑对象是陈旧的,而不是调用evict()和get()

答案 1 :(得分:0)

尝试使用

刷新对象
session.refresh(object, LockOptions.NONE)

它将从DB获得最新信息。