在我的情况下,清除整个查询缓存非常昂贵,因此我只想清除特定的查询缓存。
假设我执行了以下 hql 查询:
SELECT FROM Car c WHERE c.id = 22
下次,我想强制 hibernate 从数据库中获取结果,而不是获取查询缓存中的结果。
观察:关闭查询缓存或清除整个缓存都不是有效的选项。我根本不能妥协性能。
最佳答案
使用 hibernateQuery.setCacheMode(CacheMode.REFRESH) 禁用查询缓存。
程序化失效:
创建查询时设置区域名称hibernateQuery.setCacheRegion("car22")
,然后使其无效session.getSessionFactory().getCache().evictQueryRegion("car22");
关于java - 如何修改实体管理器的查询缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55484361/