【发布时间】:2013-03-18 07:11:55
【问题描述】:
谁能帮我解决这个问题。我使用 Infinispan 作为二级缓存,使用 Hibernate 作为 ORM。我已经打开了 enityt 和查询缓存。
我有两个查询,例如 Q1 是“从 BokkEntity b 中选择 b,其中 b.id 我第一次运行 Q1 时,它将 5 个对象从持久存储加载到缓存中。第一次运行第二个查询会在缓存中加载 7 个对象。虽然前五个对象在两个查询中都很常见。根据我的理解,查询缓存总是只存储 id,然后如果实体缓存在查询缓存中,则在缓存中为对象(由 ids 引用)完成搜索。
所以我的问题是为什么两个 Q2 都再次加载所有对象并且 在我运行 Q2 时覆盖实体缓存中的这些(运行 q1 之后) 第一次。
我已经检查了查询缓存对于任何后续请求是否正常工作。即,如果我重新运行 Q1 或 Q2,则从缓存中访问数据。
这很紧急,我会感谢你的努力。
谢谢
米娜
【问题讨论】:
标签: hibernate entity second-level-cache infinispan query-cache