我正在使用带有 Coherence 的 Hibernate L2 缓存在两个不同的 Web 服务中进行缓存。
场景
- 第一个 Web 服务具有包含 5 个字段的实体类
Employee
- 第二个 Web 服务具有相同的实体类
Employee
但具有 3 个字段。
两者都指向相同的表/架构,并且包层次结构也相同。
现在,当对employeeId=1
的新请求到达第二个 Web 服务时,它从数据库中获取值并缓存 3 列;将其他 2 列保留为 null。
现在,当 employeeId=1
请求来自第一个 Web 服务时,它通过提供 3 列直接从缓存中获取,并将其他 2 列作为 null 返回,即使在数据库中 2 列具有非 null 值也是如此。
有没有办法强制它从数据库中获取这些列?
已经尝试过的方法
- 如果我将两个 Web 服务中的列保持相同,问题就会消失,但这在我的方案中不是一个可接受的解决方案。
- 我尝试添加不同的序列化版本,但它不起作用。
- 保留完全限定的名称不同,但这迫使我们增加执行手动逐出的开销
您应该能够为此使用 Evolvable 接口,这将允许您将一个向前和向后兼容的对象插入网格中。 您只需要确保第二个 Web 服务设置的版本低于第一个。