![](/img/trans.png)
[英]How to write query in Spring Data JPA with multiple nullable parameters?
[英]How to pass multiple query parameters in @Query in Spring Data JPA?
我在我的存储库中使用nativeQuery
,它使用连接从多个表中获取数据,它还检查用户在查询中发送的输入。 我的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 的列表属性发送到查询以进行进一步过滤。
class CustomFilterRequest{
List<Long> empIds,
List<Long> countryIds,
List<Long> regionIds,
}
我知道有@Param
可用于发送单个查询参数,但如何发送多个查询参数,如上述场景? 有没有办法让这个 class 的 map 属性在nativeQuery
的@Query
中查询参数?
如果您不强制将整个 CustomFilterRequest object 作为单个参数传递,那么以下如何?
@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);
然后为您服务 class:
repository.findAllActiveUsersNative(
customFilterRequest.getEmpIds(),
customFilterRequest.getCountryIds(),
customFilterRequest.getRegionIds(),
pageable);
您可以使用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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.