使用SQL提示使用querydsl强制索引

时间:2016-10-14 07:58:45

标签: hibernate jpa querydsl

我们在我们的应用程序中使用querydsl和JPA。以下是我的存储库实现方式:

public interface TestRepository  extends JpaRepository<Test, Long>, QueryDslPredicateExecutor<Test> {   }

我使用谓词构建器和可分页对象调用默认的findAll方法:

testRepository.findAll(booleanBuilder.getValue(), pageable);

为了解决性能问题,我们需要强制对特定表进行索引。现在衍生查询如下所示:

SELECT tab1_.id AS id_20_, tab1_.user_type AS user_type2_20_ FROM table1 tab1_

我们希望我们的查询看起来像这样:

SELECT /*+ INDEX(tab1_ MGS_KG1) */ tab1_.id AS id_20_, tab1_.user_type AS user_type2_20_ FROM table1 tab1_

我怎样才能达到同样的目标? (我们使用的是querydsl-jpa 3.6.7)

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用interceptors

public String onPrepareStatement(String sql);

如果super包含必要的表

,只需调用SELECT并修改在FROM之后插入索引字符串的结果SQL字符串