How to add Query Hints to spring data jpa querydsl queries?

19,391

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

Share:
19,391
Nazaret K.
Author by

Nazaret K.

Updated on June 07, 2022

Comments

  • Nazaret K.
    Nazaret K. almost 2 years

    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);
    
    }
    
  • Nazaret K.
    Nazaret K. about 9 years
    Yes I have seen that, but that only mentions custom queries, not related to querydsl. My question was about querydsl queries. I have assumed it can be used as I posted (by overriding the standard methods).