spring - 如何将查询提示添加到 spring data jpa querydsl 查询?

标签 spring hibernate jpa spring-data-jpa querydsl

我正在使用 Spring Data JPA 1.7.1

当使用标准 Spring Data 存储库的 querydsl 方法时,我尝试将查询提示(例如,用于 Hibernate 查询缓存)传递给查询,如 QueryDslPredicateExecutor 接口(interface)中定义的那样,例如findOne(Predicate predicate)findAll(Predicate predicate)

我认为可以通过覆盖 QueryDslPredicateExecutor 中的方法(在我的存储库接口(interface)或中间接口(interface)中)并添加 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

关于spring - 如何将查询提示添加到 spring data jpa querydsl 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28964901/

相关文章:

java - EntityManager 持久化和合并在 @Transactional 方法中不起作用

java - annotation - 如何加载 Spring 配置类?

java - 如何使用 Hibernate 从 mysql 表中选择数据

mysql - 删除表中的一行 mysql hiberhate

java - Hibernate 用户模型不保存用户角色和角色

java - 使用 JPA 映射计算属性

java - 如何在 spring 中注入(inject)对象的默认版本

java - spring aop的advices中value属性和切入点属性有什么区别

java - Spring Boot 2.2,JPA > 如果第二个字母大写,则无法定位属性

java - EJB3 CMP + Hibernate AnnotationConfiguration 的编程配置