I'm using Spring Data JPA 1.7.1
I was trying pass query hints (e.g. for Hibernate query caching) to queries when using the querydsl methods of the standard Spring Data repositories, as defined in the QueryDslPredicateExecutor
interface, e.g. findOne(Predicate predicate)
, findAll(Predicate predicate)
etc.
I figured that they can be set by overriding the methods in QueryDslPredicateExecutor
(in my repository interface or an intermediate interface) and adding the QueryHints
annotation, but since I cannot find this documented anywhere I was wondering if this is the recommended way of doing it.
Here is an example:
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);
}
This is the recommended and correct way of doing it, see documentation for 1.7.1:
http://docs.spring.io/spring-data/jpa/docs/1.7.1.RELEASE/reference/html/#jpa.query-hints