我正在處理一個項目,該項目在數據庫中保留一些訪問控制信息。我們正在使用該訪問控制信息來過濾用戶可以看到的內容。我們使用的過濾器基於用戶擁有的角色。我們希望使用Spring Data提供的Repository抽象,但我們希望能夠在生成的查詢執行之前對其進行調整。有沒有方法來附加一個偵聽器或攔截器,將執行查詢之前將被調用?這樣我們就可以獲得對查詢對象的引用,並對查詢執行前我們需要的查詢做出任何調整。彈簧數據jpa - 在執行前修改查詢
我們想要做的是創建我們自己的JpaRepositoryFactoryBean,所以我們可以覆蓋SimpleJpaRepository,如here所述。我們將重寫SimpleJpaRepository.getQuery來對查詢進行調整。然後,對於所有生成的查找器方法,我們正在考慮擴展PartTreeJpaQuery並重寫PartTreeJpaQuery $ QueryPreparer。在QueryPreparer中,我們將重寫QueryPreparer.createQuery方法。我們不確定這是否是在執行之前訪問所有查詢的最簡單方法。
我們考慮添加org.springframework.data.repository.core.support.QueryCreationListener,但只有在創建查詢時纔會執行它。我認爲我們需要更有活力的東西。