无法检索记录使用jpa库外键时为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法检索记录使用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);
什么错了吗?


以上是关于无法检索记录使用jpa库外键时为空的主要内容,如果未能解决你的问题,请参考以下文章

JPA 不生成外键

使用 mysql 工作台创建 CHAR 类型的外键时出错:错误 1005:无法创建表(错误号:150)

JPA 审计 LastModifiedBy/LastModifiedDate 在事务方法中被访问时为空

由于外键为空值,无法从表中获取数据

JPA OneToOne,外键在 Spring Boot 上为空

ERROR 1005 (HY000): 使用外键时无法创建表