ehcache -- 无法从缓存加载休眠多对多关联?



我有两个实体

A和B,多对多关系

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

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

A a = instance_of_ADao.getA();
for(B b : a.getBs() ) {
///
}

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

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

在此select之后,它将B对象存储在缓存中。

我猜原因是第二次调用中的查询实际上是拉A_B,但我没有A_B的映射(它只是a在a的映射),所以我不能定义它来使用缓存。

那么是否有一种方法可以在调用a.t getbs()时利用缓存?

谢谢杨

您需要将关联本身配置为缓存。如果您正在使用注释,您可以在a中的b集合上添加@Cache注释。

最新更新