1. 程式人生 > >無法檢索記錄使用jpa庫外來鍵時為空

無法檢索記錄使用jpa庫外來鍵時為空

我面臨一個問題,當我搜索一個實體及其與外來鍵記錄。 根據業務邏輯,我需要搜尋實體——LookupRequest表帳戶(與非空帳戶id)和外來鍵=“回撥”(null)。

請注意賬戶id並不是唯一的(為簡單起見我刪除表中的其他引數,使其短)。 一旦我篩選記錄,我必須更新LookupRequest。 回撥foreignkey條目。 我無法外來鍵為空時檢索記錄。

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);
}

@Getterbr/>@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);
什麼錯了嗎?