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);
}
これは、推奨される正しい方法です。1.7.1のドキュメントを参照してください。
http://docs.spring.io/spring-data/jpa/docs/1.7.1.RELEASE/reference/html/#jpa.query-hints