首页 > 解决方案 > JPA如何从单个表的复合主键的两个不同表部分制作复合外键

问题描述

以下是我的表的结构:

表广告系列{
Camp_id(PK),
其他栏目...
}

表用户{
用户 ID(PK),
其他栏目...
}

候选表{
cand_id(PK),
其他栏目...
}

表格结果{
用户 ID(PK),
camp_id(PK),
坦率
}

标签: javaspringhibernatejpacomposite-key

解决方案


尝试这样的事情:

实体 TableCampaign

@Entity
@Table(name="CAMPAIGN")
public class Campaign implements Serializable {
    
    @GeneratedValue(...)
    @Id
    @Column(name="CAMP_ID")
    Long campId
    ....
}

实体用户

@Entity
@Table(name="USER")
public class User implements Serializable {
    
    @GeneratedValue(...)
    @Id
    @Column(name="USER_ID")
    Long userId
    ....
}

实体候选人

@Entity
@Table(name="CANDIDATE")
public class Candidate implements Serializable {
    
    @GeneratedValue(...)
    @Id
    @Column(name="CAND_ID")
    Long candId
    ....
}

实体结果

@Entity
@Table(name="RESULT")
public class Result implements Serializable {

    @EmbeddedId
    private ResultId id;

    @ManyToOne
    @JoinColumn(name = "CAND_ID")
    private Candidate candidate;
    ...
}

@Embeddable
public class ResultId implements Serializable {

    @ManyToOne
    @JoinColumn(name = "USER_ID")
    private User user;

    @ManyToOne
    @JoinColumn(name = "CAMP_ID")
    private Campaign campaign;

}

推荐阅读