Hibernate查询缓存未使用最新的数据库记录刷新

时间:2015-03-13 18:14:31

标签: hibernate

我遇到了hibernate查询缓存的问题。 带条件的select查询没有结果,因为数据库中的数据与查询条件不匹配。在这种情况下,hibernate将标识符保存为查询缓存为空。我将记录插入到与查询条件匹配的数据库中,但查询缓存始终返回null值,而不是返回我添加的最新记录。有什么办法可以用更新的记录刷新查询缓存吗?

以下是示例 - 从Employee emp中选择emp,其中name ='TEST' 上面的查询返回没有数据库的结果,因此查询缓存空白作为上述查询键的标识符。有没有什么方法可以刷新缓存,以便如果记录进入Database for name ='TEST',hibernate会给我返回新记录吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以通过逐出缓存区域来执行此操作,此查询属于: sessionFactory.getCache().evictQueryRegion([regionName])

该方法接受缓存区域名称作为参数。

cache.evictDefaultQueryRegion()如果您的查询缓存在默认查询缓存区域(org.hibernate.cache.internal.StandardQueryCache

如果您只计划使上述查询的缓存结果无效,我建议您使用指定的查询缓存(通过setCacheRegion()方法调用)