如何使用一致性处理休眠L2缓存中同一实体的不同结构以进行缓存



我正在使用带有 Coherence 的 Hibernate L2 缓存在两个不同的 Web 服务中进行缓存。

场景

  • 第一个 Web 服务具有包含 5 个字段的实体类Employee
  • 第二个 Web 服务具有相同的实体类Employee但具有 3 个字段。

两者都指向相同的表/架构,并且包层次结构也相同。

现在,当对employeeId=1的新请求到达第二个 Web 服务时,它从数据库中获取值并缓存 3 列;将其他 2 列保留为 null。

现在,当 employeeId=1 请求来自第一个 Web 服务时,它通过提供 3 列直接从缓存中获取,并将其他 2 列作为 null 返回,即使在数据库中 2 列具有非 null 值也是如此。

有没有办法强制它从数据库中获取这些列?

已经尝试过的方法

  1. 如果我将两个 Web 服务中的列保持相同,问题就会消失,但这在我的方案中不是一个可接受的解决方案。
  2. 我尝试添加不同的序列化版本,但它不起作用。
  3. 保留完全限定的名称不同,但这迫使我们增加执行手动逐出的开销

您应该能够为此使用 Evolvable 接口,这将允许您将一个向前和向后兼容的对象插入网格中。 您只需要确保第二个 Web 服务设置的版本低于第一个。

最新更新