我没有获得hibernate会话检索到的更新对象。例如如果我通过会话B更新对象[该对象早先已被会话A提取],那么我不会立即获得会话B所做的更新。
然后我将使用以下代码强制Hibernate获取更新的值。
session.evict(user);
但这涉及到数据库的往返。我怎么能避免这种情况?是否有更合适的方式立即获得更新?
答案 0 :(得分:0)
通过设计,hibernate会话(持久化上下文)彼此隔离,并保证可重复读取。
处理问题的更好方法是在会话A上调用session.refresh(),如果您怀疑对象是陈旧的,而不是调用evict()和get()
答案 1 :(得分:0)
尝试使用
刷新对象session.refresh(object, LockOptions.NONE)
它将从DB获得最新信息。