【发布时间】:2011-07-22 11:30:44
【问题描述】:
我有多对一的关系,假设用户有一家公司。公司实体没有任何其他关系。
如果我为 Company 的 findAll hibernate 查询启用二级缓存,我第二次重新加载页面(这意味着加载了用户,然后还加载了所有公司的列表)我会为每个现有公司选择(选择 .. . from company where id=?) 在休眠输出中。 当为 Company 调用 findAll 时会发生这种情况,它看起来像这样(这是类中的泛型方法,使用适当的类型进行了扩展):
return (List<T>) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria c = session.createCriteria(persistentClass);
c.setCacheable(cacheFindAll);
return c.list();
}
});
我在只读策略中使用 Jboss TreeCacheProvider。如果我使用setCacheable(false),则没有“不需要的”选择。
为什么会发生这种情况,我该如何消除这种行为?
【问题讨论】: