我使用hibernate + ehcache来读取工作流引擎数据库。 hibernate不会在该数据库上写任何东西。 如果我在缓存中设置TimetoLive设置,除非TimetoLive到达,否则缓存不会反映任何数据库更改。
数据库更改由工作流引擎API完成,因此无法使用hibernate来编写数据库。
ehcache不应该知道缓存已过期并为我做更新吗?
任何干净的方法来解决缓存错误的问题?
答案 0 :(得分:1)
除非TimetoLive到达,否则缓存不会反映任何数据库更改。
这是预期的功能!这些二级缓存除了将数据存储在哈希映射中之外什么也不做,除非您告诉它或将时间从缓存中逐出并重新读取它们,否则对变化一无所知。
要解决此问题,请不要在易失性对象上使用缓存。
答案 1 :(得分:0)
如果我在缓存中设置TimetoLive设置,除非TimetoLive到达,否则缓存不会反映任何数据库更改。
这意味着你没有使用它。
数据库更改由工作流引擎API完成,因此无法使用hibernate来编写数据库。
因此作为替代(对timetoLive),这意味着您需要缓存模式进行读写或读取非严格写入(检查名称之类的东西)。如果它不反映chnages而我正在讨论两件事