Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA OneOne嵌入式ID_Jpa_Composite Primary Key - Fatal编程技术网

JPA OneOne嵌入式ID

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

我正在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,则它可以工作:

@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;