Я сталкиваюсь с проблемой при поиске сущности и ее записей с помощью внешнего ключа.Согласно бизнес-логике, мне нужно искать таблицу Entity - LookupRequest с учетной записью (с ненулевым идентификатором учетной записи) и внешним ключом = "обратный вызов" (с нулевым).
Обратите внимание, что идентификатор учетной записи не является уникальным (для простоты я удалил другие параметры в таблице, чтобы сделать его коротким).После того, как я отфильтрую запись, мне нужно обновить LookupRequest.callBack до записи Foreignkey.Я не могу получить записи, когда внешний ключ имеет значение null.
import javax.persistence.*;
@Entity
public class LookupRequest {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@Column
private String account;
@Column
private String caseId;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "id", unique=false, nullable=true, updatable=true)
private Callback callback;
public LookupRequest(String account, String caseId) {
this.account = account;
this.caseId = caseId;
callback = null;
}
public Long getId() {
return id;
}
public String getAccount() {
return account;
}
public String getCaseId() {
return caseId;
}
public Callback getCallback() {
return callback;
}
public void setCallback(Callback callback) {
this.callback = callback;
}
}
@Repository
public interface LookupRequestRepository extends JpaRepository<LookupRequest, Long> {
@Query("SELECT lr from LookupRequest lr where lr.account = :account and lr.callback = :callback")
LookupRequest findCaseId(@Param("account") String account, @Param("callback") String callback);
}
@Getter
@Setter
@Entity
public class Callback {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
public Long id;
@Column(length = 20000)
private String rawResponse;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public void setRawResponse(String rawResponse) {
this.rawResponse = rawResponse;
}
}
, тогда я звоню следующим образом:
LookupRequest lookupRequestFromDB = lookupRequestRepository.findCaseId("ABC", null);
Что не так?