我一直在努力解决以下问题。在检查StackOverflow和Baeldung上的文章的解决方案后,当试图在SpringBoot应用程序中映射2个Oracle SQL表与复合PK之间的以下一对一关系时,我仍然得到不同的JPA错误:
<表类>
ID
版本
tbody><<tr>1 2022.1 表类>
经过多次尝试,我找到了解决问题的办法。
我必须在两个实体和FetchType.LAZY之间使用一个公共键。
MasterDetails.class
public class MasterDetails {
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name="ID", column=@Column(name="MASTER_ID"))
})
private MasterId id;
@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumns({
@JoinColumn(name = "master_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "version", referencedColumnName = "version", nullable = false)
})
private Master master;
@Lob
@Column(name = "guidance", nullable = false)
private String guidance;
}
Master.class
public class MasterSheet {
@EmbeddedId
private MasterId id;
@OneToOne(mappedBy = "master", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private MasterDetails masterDetails;
}