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