【发布时间】:2014-03-27 10:31:15
【问题描述】:
我有一个对象 Sample,其中包含 Foo 个对象的Collection。
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 抛出不存在具有给定标识符的行。
如何根据数据库中的实际情况刷新会话缓存?
【问题讨论】: