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

标签 java hibernate jpa caching

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

假设我执行了以下 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/

相关文章:

java - eclipselink JPA : combining @MappedSuperclass with @Cacheable

java - Gradle 传递依赖解析到 alpha 版本?

java - Hibernate二级单向映射

java - 有什么方法可以使 hibernate 查询自动返回键值映射(省略 "as")?

java - @ManyToMany JPA 关系在连接表和 UK 中使用二度关系

java - Spring启动eclipse maven WAS : Error creating bean with name 'entityManagerFactory' ,

java - 在Python中压缩字符串以及如何在java中解压缩该字符串

java正则表达式匹配多个换行符直至字符

java - 谷歌 VR Java 和 C++?

java - 20多分钟就开始Spring应用了。如何减少呢?