CrudRepository Find by Custom join field filter



我有以下实体

  1. 请求对象
  2. AdditionalReqObj.

这两个实体都与表(reqId字段(中的REQ_ID列链接。我正在使用Spring data CrudRepository interface作为存储库。

现在我想按REQUEST.REQ_STATUS打开链接findAll RequestObj entity其他请求也应按ADDL_REQUEST.ADD_REQ_STATUS过滤

@Entity
@Table(name = "REQUEST")
public class RequestObj implements Serializable {
@Id
@Column(name = "REQ_ID")
private long reqId;
@Column(name = "REQ_NM")
private String reqUserNm;
@Column(name = "REQ_EMAIL")
private String reqUserEmail;
@Column(name = "REQ_ID")
private String reqComments;
@Column(name = "REQ_STATUS")
private String reqStatus;
@OneToMany(mappedBy = "request", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<AdditionalReqObj> requestDtls;
---getter setter----
}
@Entity
@Table(name = "ADDL_REQUEST")
public class AdditionalReqObj implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "AdD_REQ_ID")
private long addReqId;
@Column(name = "ROLE_NM")
private String add_req_comment;
@ManyToOne
@JoinColumn(name = "REQ_ID")
private RequestObj request;
@Column(name = "ADD_REQ_STATUS")
private String addReqStatus;
---getter setter----
}

您必须在方法上触发本机查询。你可以这样做,

@Query(value = "SELECT R.* FROM REQUEST R INNER JOIN ADDL_REQUEST AR ON R.REQ_ID = AR.REQ_ID WHERE R.REQ_STATUS = :PARAM1 and AR.ADD_REQ_STATUS = :PARAM2 ", nativeQuery = true)
List<ReqObj> findAllByAddressId(Object PARAAM1, Object PARAM2);

最新更新