我使用hibernate+ehcache读取工作流引擎数据库。hibernate不会在该数据库上写入任何内容。如果我在缓存中设置TimetoLive设置,则除非TimetoLive到达,否则缓存不会反映任何数据库更改。
数据库的更改是由工作流引擎API完成的,因此无法使用hibernate来编写数据库。
ehcache不应该知道缓存已过期并为我更新吗?
有什么干净的方法可以解决缓存错误的问题吗?
除非TimetoLive到达,否则缓存不会反映任何数据库更改。
这就是预期的功能!这些二级缓存只会将数据存储在哈希映射中,并且对更改一无所知,除非你告诉它或者是时候将对象从缓存中逐出并重新读取它们。
要解决这个问题,就不要在易失性对象上使用缓存。
如果我在缓存中设置TimetoLive设置,则除非TimetoLive到达,否则缓存不会反映任何数据库更改。
所以这意味着你没有使用它。
数据库的更改是由工作流引擎API完成的,因此无法使用hibernate来编写数据库。
因此,作为一个laternative(到timetoLive),这意味着你需要缓存模式来读写或非限制性地读写(检查名称)。如果它没有反映技术,我将总结两件事
- 您的工作流引擎正在使用hibernate
- 并且您的缓存设置为只读