JPA OneOne嵌入式ID
我正在JPA中建立一种关系,在这种关系中,我可以将一个文件拆分为多个文件,同时在关联表中保持原始文件关系。 我有MyFile实体和FileRelationship实体,这是具有两列的关联表:myFileId主键和parentId。这两列是引用MyFile id的外键 所以我有两个实体,MyFile.java和FileRelationship.java。MyFile可以有一个父级,父级可以有多个子级。关系存储在FileRelationship表中 MyFile.java @实体 公共类MyFile实现可克隆{ @身份证 @SequenceGeneratorname=MYFILE,sequenceName=MYFILE,allocationSize=1 @GeneratedValuestrategy=GenerationType.SEQUENCE,generator=MYFILE_SEQ 私人长id; //获取此MyFile的FileRealationship中的父级 @OneToOne mappedBy=myFile 私人文件关系文件关系; ... } FileRelationship.java MyFileId.java 尝试存储关系时,我无法保存关系。我一直在 org.hibernate.AssertionFailure:空标识符 如果我将FileRelationship.java中的以下内容更改为ManyToOne,则它可以工作:JPA OneOne嵌入式ID,jpa,composite-primary-key,Jpa,Composite Primary Key,我正在JPA中建立一种关系,在这种关系中,我可以将一个文件拆分为多个文件,同时在关联表中保持原始文件关系。 我有MyFile实体和FileRelationship实体,这是具有两列的关联表:myFileId主键和parentId。这两列是引用MyFile id的外键 所以我有两个实体,MyFile.java和FileRelationship.java。MyFile可以有一个父级,父级可以有多个子级。关系存储在FileRelationship表中 MyFile.java @实体 公共类MyFil
@MapsId("myFileId")
@ManyToOne //@OneToOne()
@JoinColumn(name="myFileId")
private MyFile myFile;
但这意味着许多FileRelationship实体可以属于一个myFile实体,这意味着myFile不再是主键
@Embeddable
public class MyFileId implements Serializable {
private Long myFileId;
public MyFileId() {
super();
}
public MyFileId(Long myFileId) {
super();
this.myFileId = myFileId;
}
public Long getMyFileId() {
return myFileId;
}
...
}
@MapsId("myFileId")
@ManyToOne //@OneToOne()
@JoinColumn(name="myFileId")
private MyFile myFile;