2011-12-21 75 views
0

我有2个实体ehcache - hibernate无法从缓存中加载多对多关联?

A和B,在多对多关系中相关。

我设置既要延迟加载,因为在大多数情况下,我只需要一个,而不是关联B.

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

A a = instance_of_ADao.getA(); 

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

第一次调用木屐()不从缓存中查找一个,但第二个电话(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的映射),所以我不能定义它来使用缓存。

那么有没有一种方法可以在调用A.getBs()时使用缓存?

感谢 杨

回答

0

您需要配置该协会本身被缓存。如果您使用注释,则可以在A中的Bs集合上添加@Cache注释。