0

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

然后我必须使用下面的代码来强制 Hibernate 获取更新的值。

session.evict(user);

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

4

2 回答 2

0

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

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

于 2013-03-13T17:24:25.380 回答
0

尝试使用刷新对象,

session.refresh(object, LockOptions.NONE)

它将从 DB 获取最新信息。

于 2013-08-09T11:59:42.877 回答