ehcache - hibernate无法从缓存中加载多对多关联?

时间:2011-12-21 05:04:05

标签: hibernate ehcache

我有2个实体

A和B,与多对多关系有关。

我将两者设置为延迟加载,因为在大多数情况下我只需要A,而不是相关的B.

我启用了ehcache。在少数情况下,我的代码执行

A a = instance_of_ADao.getA();

for(B b : a.getBs() ) {
///
}

第一次调用getA()从缓存中查找A,但第二次调用(getBs())没有, 而是生成一个查询:

SELECT * from A_B LEFT OUTER JOIN B on A_B.B_ID = B.B_ID WHERE A_B.A_ID = .....;

在此选择之后,它会将B对象存储在缓存中。

我想原因是第二次调用中的查询实际上是在拉A_B,但是我没有A_B的映射(它只是在A的映射中),所以我无法定义使用缓存。 / p>

那么有没有办法在调用A.getBs()上使用缓存?

由于 杨

1 个答案:

答案 0 :(得分:0)

您需要配置要缓存的关联本身。如果您正在使用注释,则可以在A。

中的Bs集合上添加@Cache注释