Hibernate查询缓存不返回新添加的实体

时间:2013-07-02 16:09:54

标签: hibernate ehcache second-level-cache query-cache

Enviorment -

  1. 启用了Hibernate-查询缓存和二级缓存

  2. 使用缓存 - 将updatetimestampcache设置为永恒的Ehcache。

  3. 问题 - 对于实体​​E,我在表格中有2行。因此,在使用setcacheable(true)的条件查询(获取所有行)时,首次填充第二级缓存和查询缓存。

    通过setcacheable(true)的条件进一步执行相同的查询是从查询缓存中提供的。到目前为止一切都很好。

    问题 - 使用休眠保存实体E的新对象(现在实体E的表中没有3行),通过事务服务层方法。 任何进一步查询以获取实体E的行(使用setcacheable(true))仅返回2个对象。在哪里应该返回3个物体。

    当新实体保存在其表格中时,似乎未验证实体E的查询缓存。

1 个答案:

答案 0 :(得分:-1)

SO这就是我认为的根本原因,它是我的应用程序使用ehcahce的方式。 详情如下

  1. 我有两个独立的应用程序托管在同一个tomcat中。
  2. 这两个应用程序都使用相同的jar(每个应用程序在其lib中都有一个jar),它连接到数据库并加载ehcache。
  3. 如果应用A确实插入了,那么它只会使自己的ehcache无效。由于其他应用程序应用程序B托管在同一个tomcat中,有自己的ehcahe区域,应用程序b将继续使用陈旧数据。