我发现@NotFound(action = NotFoundAction.IGNORE)应该触发我们项目的急切负载并遇到性能问题。谷歌之后,使用以下方法代替上面的休眠设置。但是我遇到了关于这种解决方法的另一个问题。
public Person getPerson() {
if (!Hibernate.isInitialized(person)) {
try {
Hibernate.initialize(person);
} catch (org.hibernate.ObjectNotFoundException one) {
person= null;
}
}
return person;
}
问题出在我们的DAO上,结果集是一个List,在该列表中我们有两个记录指向同一个Person代理。然后,当第一个记录调用getPerson时就可以了。返回null,第二条记录调用getPerson它将返回代理而不是null。因为它之前已初始化。