데이터베이스에 일부 액세스 제어 정보를 유지하는 프로젝트에서 작업 중입니다. 우리는 액세스 제어 정보를 사용하여 사용자가 볼 수있는 것을 필터링합니다. 현재 사용중인 필터는 사용자의 역할을 기반으로합니다. Spring Data에서 제공하는 Repository 추상화를 사용하고자하지만 생성 된 쿼리를 실행하기 전에이를 조정할 수 있기를 원합니다. 쿼리가 실행되기 전에 호출 될 리스너 또는 인터셉터를 첨부 할 수 있습니까? 이렇게하면 쿼리 개체에 대한 참조를 가져올 수 있으며 쿼리가 실행되기 전에 필요한 쿼리를 조정할 수 있습니다.스프링 데이터 jpa - 실행 전 쿼리 수정
here과 같이 SimpleJpaRepository를 재정의 할 수 있도록 우리 자신의 JpaRepositoryFactoryBean을 만드는 것이 우리가 생각하고있는 것입니다. 우리는 SimpleJpaRepository.getQuery를 오버라이드하여 쿼리를 조정합니다. 그런 다음 생성 된 모든 파인더 메서드에 대해 PartTreeJpaQuery을 확장하고 PartTreeJpaQuery $ QueryPreparer를 재정의하려고했습니다. QueryPreparer에서 QueryPreparer.createQuery 메소드를 대체합니다. 쿼리가 실행되기 전에 모든 쿼리에 액세스하는 가장 간단한 방법인지는 확실하지 않았습니다.
org.springframework.data.repository.core.support.QueryCreationListener를 추가하려고 생각했지만 쿼리가 생성 될 때만 실행됩니다. 우리는 좀 더 역동적 인 것이 필요하다고 생각합니다.