0

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

设想

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

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

现在,当新的请求employeeId=1来自第二个 Web 服务时,它会从数据库中获取值并缓存 3 列;保持其他 2 为空。

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

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

已经尝试过的方法

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

1 回答 1

0

您应该能够为此使用Evolvable接口,这将允许您将对象插入到网格中,该对象既可以向前兼容,也可以向后兼容。您只需要确保 Second Webservice 设置的版本低于 First。

于 2013-10-20T19:03:30.793 回答