我有一个对象 Sample,它包含一个 Collection Foo 对象。
public class Sample {
private String name;
private List<Foo> fooList;
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
public List<Foo> getFooList() {
return fooList;
}
public void setFooList(List<Foo> list) {
fooList = list;
}
}
对象 Sample 和 Foo 在 Hibernate 中正确映射。
我打开 Hibernate 事务,我在缓存中有一个“name”=“tommaso”的 Sample 实例。 有人在数据库中修改了该行并更改了“massimo”中的名称。 如果我想刷新缓存中的实例,我写
Sample sample = ...;
session.refresh(sample);
Hibernate 刷新了 Sample 对象的实例,属性 name 变成了“massimo”。有用!
如果有人编辑了这个实例的集合,并在 fooList 中删除了一个 Foo,当我刷新那个实例 Sample 时, Hibernate 抛出不存在具有给定标识符的行。
如何使用数据库中的实际情况刷新 session 缓存?
最佳答案
您可以自己从缓存中捕获 UnresolvableObjectException
和 evict
样本:
public boolean refreshOrEvict(Session session, Object entity) {
try {
session.refresh(entity);
return true;
} catch (UnresolvableObjectException e) {
session.evict(entity);
return false;
}
}
关于java - 数据库中已删除对象的 Hibernate 刷新 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684834/