我使用的是Spring Data JPA 1.7.1
当使用标准Spring Data存储库的querydsl方法时,我尝试将查询提示(例如,用于Hibernate查询缓存)传递给查询,如QueryDslPredicateExecutor
接口中所定义的,例如findOne(Predicate predicate)
,findAll(Predicate predicate)
等。
我认为可以通过覆盖QueryDslPredicateExecutor
中的方法(在我的存储库界面或中间界面中)并添加QueryHints
注释来设置它们,但是因为我无法在任何地方找到这些文档想知道这是否是推荐的做法。
以下是一个例子:
public interface MyEntityRepository extends CrudRepository<MyEntity, Integer>, CacheableQueryDslPredicateExecutor<MyEntity> {
@QueryHints(value = {
@QueryHint(name = "org.hibernate.cacheable", value = "true"),
@QueryHint(name = "org.hibernate.cacheMode", value = "NORMAL"),
@QueryHint(name = "org.hibernate.cacheRegion", value = "myCacheRegion")
})
Iterable<T> findAll(Predicate predicate);
}
答案 0 :(得分:4)
这是推荐和正确的方法,请参阅1.7.1的文档:
http://docs.spring.io/spring-data/jpa/docs/1.7.1.RELEASE/reference/html/#jpa.query-hints