提问人:wheelerlc64 提问时间:10/3/2023 更新时间:10/3/2023 访问量:9
基于传入请求的带有动态 where 子句的 Spring Data JPA 查询
Spring Data JPA query with dynamic where clause based on incoming request
问:
我有一种情况,我需要能够有一个包含两列(vNum、vName)的响应,并且在请求中,我可以期望传递 v_num 或 v_name(必须是其中之一),并且还可以在请求中发送可选参数(ownerId 或 rpNum)。下面是我想要作为结果集返回的查询:
select RMV.v_num,v_name
from rp.RP RP
inner join rp.rp_mp_v rmv on RP.rp_num = rmv.rp_num
where replace(owner_id,' ','') = '${ownerId}' --(ownerId string from request which is optional)
and (cast(rmv.v_num as varchar(10)) like '%vNum%' --(int from request)
or cast(Rmv.v_name as varchar(10)) like '%vName%' --(string from request) )
and RP.rp_number = ${rpNum}; -- (rpNum which is an optional int in request)
我的请求 DTO 如下所示:
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RpVendorRequest {
private Integer vNum;
private String vName;
private Integer rpNum;
private String ownerId;
}
我想为此创建一个存储库,我可以在其中检查传入请求中这些可选参数的 null/not null。如何使用 spring data jpa 实现这一点?修改查询以进行这些 null/not null 检查或在请求本身中是否有意义?我对此有点陌生,所以我不确定该往哪个方向走。任何建议都会有所帮助。谢谢。
答: 暂无答案
评论