2016-10-14 3 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

당신은 그냥 super 전화 interceptors

public String onPrepareStatement(String sql); 

을 사용하고 SELECTFROM 경우 필요한 테이블

를 포함 한 후 인덱스 문자열을 삽입하는 결과 SQL 문자열을 수정할 수 있습니다