【问题标题】:Hibernate Query cache and second level cacheHibernate 查询缓存和二级缓存
【发布时间】:2014-11-28 18:16:35
【问题描述】:

我有一个这样的查询缓存。

JPAQuery dslQuery = new JPAQuery(entityManager); QReview qReview = QReview.Review; BooleanExpression where = QReview.review.id.in('123'); dslQuery.setHint("org.hibernate.cacheable", true); List<Review> reviews = dslQuery.from(qReview ).where(where).distinct().list(qReview );

所有缓存参数都设置正确,所以我希望上面的列表,即List&lt;Review&gt; 将被缓存?

但是当我执行reviewRepository.findOne('123'); 时,我可以看到 db 查询被触发,而不是从缓存中获取 id 123 的 Review。

注意:reviewRepository 是一个标准的 querydsl 存储库。其中实现了CRUDRepository&lt;Review,String&gt;Review 域模型有Cacheable,Cache annotations 集。

提前感谢您的帮助。

【问题讨论】:

    标签: hibernate ehcache querydsl spring-cache


    【解决方案1】:

    稍后,如果您发布缓存配置会有所帮助。

    可能发生缓存未启用或未正确配置的情况。 这不是第一次“正确”配置所有内容并且由于禁用参数的某些错误而没有使用缓存。

    【讨论】: