web-dev-qa-db-ja.com

Spring Data JPA Querydslクエリにクエリヒントを追加するにはどうすればよいですか?

Spring Data JPA1.7.1を使用しています

QueryDslPredicateExecutorインターフェースで定義されているように、標準のSpring Dataリポジトリのquerydslメソッドを使用するときに、クエリヒント(Hibernateクエリキャッシングなど)をクエリに渡そうとしていました。 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);

}
15
Nazaret K.

これは、推奨される正しい方法です。1.7.1のドキュメントを参照してください。

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

5
Michael Simons