我nativeQuery在我的存盤庫中使用它使用 join 從多個表中獲取資料,它還檢查用戶在查詢中發送的輸入。我的Repository圖層看起來像:
@Query(
value = "SELECT e.empname,c.countryName,r.RegionName
FROM Employee e,Country c, Region r
WHERE e.countryId=c.countryId
AND c.regionId=r.regionId
AND e.employeeId IN (:empIds)
AND c.countryId IN (:countryIds)
AND r.regionId IN (:regionIds)",
nativeQuery = true)
Collection<Object> findAllActiveUsersNative(CustomFilterRequest request,Pageable pageable);
以下是我的過濾器Class,它們是從 UI 發送的 ID 串列,并且應將此類的串列屬性發送到查詢以進行進一步過濾。
class CustomFilterRequest{
List<Long> empIds,
List<Long> countryIds,
List<Long> regionIds,
}
我知道有@Param哪些可用于發送單個查詢引數,但如何在上述場景中發送多個查詢引數?有沒有辦法在地圖上查詢引數這一類的屬性nativeQuery的@Query?
uj5u.com熱心網友回復:
如果您不強制要求將整個 CustomFilterRequest 物件作為單個引數傳遞,那么以下內容如何?
@Query(
value = "SELECT e.empname,c.countryName,r.RegionName
FROM Employee e,Country c, Region r
WHERE e.countryId=c.countryId
AND c.regionId=r.regionId
AND e.employeeId IN :empIds
AND c.countryId IN :countryIds
AND r.regionId IN :regionIds",
nativeQuery = true)
Collection<Object> findAllActiveUsersNative(
@Param("empIds") List<Long> empIds,
@Param("countryIds") List<Long> countryIds,
@Param("regionIds") List<Long> regionIds,
Pageable pageable);
然后在您的服務類中:
repository.findAllActiveUsersNative(
customFilterRequest.getEmpIds(),
customFilterRequest.getCountryIds(),
customFilterRequest.getRegionIds(),
pageable);
uj5u.com熱心網友回復:
您可以使用SpEL 運算式。
@Query(
value = "SELECT e.empname,c.countryName,r.RegionName
FROM Employee e,Country c, Region r
WHERE e.countryId=c.countryId
AND c.regionId=r.regionId
AND e.employeeId IN (:#{#request.empIds})
AND c.countryId IN (:#{#request.countryIds})
AND r.regionId IN (:#{#request.regionIds})",
nativeQuery = true)
Collection<Object> findAllActiveUsersNative(CustomFilterRequest request,Pageable pageable);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/377082.html
