2016-10-14 38 views
1

我們在我們的應用程序中使用querydsl和JPA。下面是如何我的倉庫實現:使用SQL提示強制索引使用querydsl

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)

謝謝!

回答

0

您可以使用interceptors

public String onPrepareStatement(String sql); 

只要打電話super和修改結果的SQL字符串插入索引字符串SELECT如果FROM包含必要的表

相關問題