【发布时间】:2011-08-24 08:57:08
【问题描述】:
我们在集群中使用 Ehcache 作为 Hibernate 的 L2 缓存。由于我们一一更新服务器以避免停机,因此在某个时候,集群中可能有一台服务器运行旧版本的代码,而另一台服务器运行更新的版本。
我认为问题在于 Ehcache,但我将其范围缩小到了 Hibernate。 Hibernate 不会缓存整个实体,而是缓存字段值的数组。因此,如果您将具有不同架构的实体复制到缓存中,加载时会发生坏事,因为数组被盲目复制。
我无法在 Ehcache 级别上阻止它。我想在我的实体类上设置serialVersionUID,但这不适用于那些较低级别的数组。
如何向 Hibernate 指示实体版本已更改并且不应加载缓存中的值?
【问题讨论】: