在我的情况下,清除整个查询缓存确实非常昂贵,因此我只想清除特定的查询缓存。
说我已经执行了以下hql查询:
SELECT FROM Car c WHERE c.id = 22
下一次,我想强制休眠从数据库中获取结果,而不是获取查询缓存中的内容。
观察:关闭查询缓存或清除整个缓存都是有效的选项。我完全不能降低性能。
答案 0 :(得分:0)
使用hibernateQuery.setCacheMode(CacheMode.REFRESH)
禁用查询缓存。
程序无效:
在创建查询hibernateQuery.setCacheRegion("car22")
时设置区域名称,然后使其无效session.getSessionFactory().getCache().evictQueryRegion("car22");