我正在尝试使用Hibernate映射的三个实体之间使用三元关联。但是我不知道如何使用这种关联来映射这些实体的属性。
我希望避免将此关联表映射为新实体。
我们具有角色(RefRolesMission
),职责(RefResponsabilitesMission
)和级别(RefNiveauxResponsabiliteMission
)。
每个角色具有的每种职责都有一个或多个级别。
实体角色:
@Entity
@Table(name = "REF_ROLES_MISSION")
public class RefRolesMission extends AbstractEntity {
private Integer id;
private String libelle;
// I correctly initialize this attribute but I would also like to have access to the levels of these responsibilities.
private Set<RefResponsabilitesMission> responsabilites;
// It is this attribute that I wish I could initialize, but is it possible?
private Map<RefResponsabilitesMission, Set<RefNiveauxResponsabiliteMission>> responsabilitesNiveaux;
@Id
@GeneratedValue
@Column(name = "REF_ROL_MIS_ID")
public Integer getId() {
return this.id;
}
@Column(name = "REF_ROL_MIS_LIBELLE")
public String getLibelle() {
return this.libelle;
}
@ManyToMany(fetch = FetchType.LAZY, targetEntity = RefResponsabilitesMission.class)
@JoinTable(name = "RESPONSABILITES_MISSION", joinColumns = {
@JoinColumn(name = "RES_MIS_ROLE") }, inverseJoinColumns = { @JoinColumn(name = "RES_MIS_RESPONSABILITE") })
public Set<RefResponsabilitesMission> getResponsabilites() {
return responsabilites;
}
// ...
}
其他两个实体相似。它们只有一个标识符和一个标签。
从一个角色开始,我寻求获得他的职责,然后进入他的职责级别。该怎么做?
我的三元关联表:
CREATE TABLE RESPONSABILITES_MISSION (
RES_MIS_ROLE TINYINT, // Role ID
RES_MIS_RESPONSABILITE TINYINT, // Responsability ID
RES_MIS_NIVEAU TINYINT, // Level ID
CONSTRAINT fk_res_mis_role_id FOREIGN KEY (RES_MIS_ROLE) REFERENCES REF_ROLES_MISSION(REF_ROL_MIS_ID),
CONSTRAINT fk_res_mis_responsabilite_id FOREIGN KEY (RES_MIS_RESPONSABILITE) REFERENCES REF_RESPONSABILITES_MISSION(REF_RES_MIS_ID),
CONSTRAINT fk_res_mis_niveau_id FOREIGN KEY (RES_MIS_NIVEAU) REFERENCES REF_NIVEAUX_RESPONSABILITE_MISSION(REF_NIV_RES_MIS_ID),
PRIMARY KEY(RES_MIS_ROLE, RES_MIS_RESPONSABILITE, RES_MIS_NIVEAU)
);
谢谢!