Как добавить подсказки запроса к запросам spring data jpa querydsl?

Я использую Spring Data JPA 1.7.1.

Я пытался передать подсказки запросов (например, для кэширования запросов Hibernate) в запросы при использовании методов querydsl стандартных репозиториев данных Spring, как определено в интерфейсе 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);

}

person Nazaret K.    schedule 10.03.2015    source источник
comment
Вы уверены в версии? Поддержка этого была добавлена ​​через DATAJPA-574 в версии 1.7.0.RC1. QueryDslJpaRepository.createQuery(…) следует применить эти подсказки.   -  person Oliver Drotbohm    schedule 11.03.2015
comment
То, что я написал выше, действительно работает. Я просто хотел знать, правильно ли это использование, потому что я нигде не могу найти документацию, касающуюся querydsl. Спасибо.   -  person Nazaret K.    schedule 12.03.2015


Ответы (1)


Это рекомендуемый и правильный способ сделать это, см. документацию для 1.7.1:

http://docs.spring.io/spring-data/jpa/docs/1.7.1.RELEASE/reference/html/#jpa.query-hints

person Michael Simons    schedule 11.03.2015
comment
Да, я видел это, но там упоминаются только пользовательские запросы, не связанные с querydsl. Мой вопрос был о запросах querydsl. Я предположил, что его можно использовать так, как я опубликовал (путем переопределения стандартных методов). - person Nazaret K.; 12.03.2015