JPQL。JPA查询。如何获取命名参数集合的大小
我正在尝试在存储库接口中定义自定义方法JPQL。JPA查询。如何获取命名参数集合的大小,jpa,jpql,Jpa,Jpql,我正在尝试在存储库接口中定义自定义方法 public interface RequestRepository extends JpaRepository<Request, Long> { @Query("SELECT r FROM Request r " + "LEFT JOIN FETCH r.pathParams pp " + "WHERE r.responseCode = :code "
public interface RequestRepository extends JpaRepository<Request, Long> {
@Query("SELECT r FROM Request r " +
"LEFT JOIN FETCH r.pathParams pp " +
"WHERE r.responseCode = :code " +
"AND r.requestMethod = :method " +
"AND r.requestPath = :path " +
"AND r.requestBody = :body " +
"AND r.apiDetails = :apidetails " +
"AND (pp IN :pathparams OR r.pathParams IS EMPTY) " +
"AND SIZE(r.pathParams) = :pathparamssize "
)
Optional<Request> findByDetails(
@Param("code") String code,
@Param("method") RequestMethod method,
@Param("path") String path,
@Param("body") RequestBody body,
@Param("apidetails") ApiDetails apidetails,
@Param("pathparams") Set<PathParam> pathparams,
@Param("pathparamssize") Integer pathparamssize
);
public interface RequestRepository扩展了JpaRepository{
@查询(“从请求r中选择r”+
“左连接获取r.pathParams pp”+
“其中r.responseCode=:code”+
“和r.requestMethod=:方法”+
“和r.requestPath=:path”+
“和r.requestBody=:body”+
“和r.apidestails=:apidestails”+
“和(路径参数或r.pathparams中的pp为空)”+
“和大小(r.pathParams)=:pathparamssize”
)
可选FindBydeals(
@参数(“代码”)字符串代码,
@参数(“方法”)请求方法,
@参数(“路径”)字符串路径,
@参数(“主体”)请求主体,
@参数(“apidetails”)apidetails apidetails,
@参数(“路径参数”)设置路径参数,
@Param(“pathparamssize”)整数pathparamssize
);
}
这是可行的,但我相信可以用更好的方式
如您所见,我声明了冗余参数“pathparamssize”(IMO)
我尝试像“AND SIZE(r.pathParams)=SIZE(:pathParams)”这样做,但它不想使用“SIZE(:pathParams)”
你能给点建议吗
非常感谢