Я пытаюсь использовать троичную связь между тремя сущностями, которые я сопоставил с 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)
);
Спасибо!