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
Hibernate 一个到复合主键jpa之间的映射_Hibernate_Jpa_Spring Data Jpa - Fatal编程技术网

Hibernate 一个到复合主键jpa之间的映射

Hibernate 一个到复合主键jpa之间的映射,hibernate,jpa,spring-data-jpa,Hibernate,Jpa,Spring Data Jpa,我有一个用例,两个表有复合主键,一个表和数据库中的另一个表有关系,如何在程序级获得这种关系,如何声明bean类 //表项目的复合主键 @Embeddable @Data public class ProjectId implements Serializable { private static final long serialVersionUID = 12233365L; @Column(name = "PROJECT_CODE")

我有一个用例,两个表有复合主键,一个表和数据库中的另一个表有关系,如何在程序级获得这种关系,如何声明bean类

//表项目的复合主键

    @Embeddable
    @Data
    public class ProjectId implements Serializable {

        private static final long serialVersionUID = 12233365L;

        @Column(name = "PROJECT_CODE")
        private Integer pCode;

        @Column(name = "BOL")
        private String bol;

        @Column(name = "BOLS")
        private String bols;

        @Column(name = "EID")
        private Integer eId;

    }
//项目类

public class Project implements Serializable {

    private static final long serialVersionUID = 748569L;

    @EmbeddedId
    private ProjectId projectId;

    @Column(name = "UPDATED_DATE")
    private Date updatedDate;

    @Column(name = "CREATED_DATE")
    private Date createdDate;

}
//pcode、bol、bol、eId是复合键

//文档表,这里是项目之间更有趣的关系,文档是“pcode、bol、bols、eId+did”

//文件表

@Entity
@Table(name = "DOCUMENT")
@Data
public class Documents implements Serializable {

    private static final long serialVersionUID = 14578523695L;

    @EmbeddedId
    private DocumentId documentId;

    @Column(name = "JUR")
    private String jur;

    @Column(name = "DSEQUENCE")
    private Integer dSequence;

    @Column(name = "UPDATED_DATE")
    private Date updatedDate;

    @Column(name = "CREATED_DATE")
    private Date createdDate;

}
两表文档之间的关系是项目的子表,
我想做一个从项目方面的关系。 从文档到项目也可以

如何映射表之间的一对一关系

  • 文件表应包含项目实体的关键列(pCode、bol等)
  • 在文档类中添加此成员:

    @OneToOne
    @JoinColumns({@JoinColumn(name = "pCode", referencedColumnName = "PROJECT_CODE"),
                  @JoinColumn(name = "bol", referencedColumnName = "BOL"),
                  @JoinColumn(name = "bols", referencedColumnName = "BOLS"),
                  @JoinColumn(name = "eid", referencedColumnName = "EID")})
    @MapsId("projectId")
    private Project project;
    

  • 谢谢你的回答,有可能从项目一方谈恋爱吗?是的,另一方也一样。确保在项目表中添加DocumenId列
    @OneToOne
    @JoinColumns({@JoinColumn(name = "pCode", referencedColumnName = "PROJECT_CODE"),
                  @JoinColumn(name = "bol", referencedColumnName = "BOL"),
                  @JoinColumn(name = "bols", referencedColumnName = "BOLS"),
                  @JoinColumn(name = "eid", referencedColumnName = "EID")})
    @MapsId("projectId")
    private Project project;