我有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()上使用缓存?
由于 杨
答案 0 :(得分:0)
您需要配置要缓存的关联本身。如果您正在使用注释,则可以在A。
中的Bs集合上添加@Cache注释