如何修改实体管理器的查询缓存?

时间:2019-04-02 22:22:21

标签: java hibernate jpa caching

在我的情况下,清除整个查询缓存确实非常昂贵,因此我只想清除特定的查询缓存。

说我已经执行了以下hql查询:

SELECT FROM Car c WHERE c.id = 22

下一次,我想强制休眠从数据库中获取结果,而不是获取查询缓存中的内容。

观察:关闭查询缓存或清除整个缓存都是有效的选项。我完全不能降低性能。

1 个答案:

答案 0 :(得分:0)

使用hibernateQuery.setCacheMode(CacheMode.REFRESH)禁用查询缓存。

程序无效:

在创建查询hibernateQuery.setCacheRegion("car22")时设置区域名称,然后使其无效session.getSessionFactory().getCache().evictQueryRegion("car22");