0

我在休眠多对多关系中遇到问题。

我有一个名为的表Projects,其中包含以下字段:

(项目编号、项目名称、创建日期、项目经理)

我还填充了一个名为teamproject(Multiple select Combobox) 的字段,它关联了多个项目成员。

因此,当我使用 Hibernate 将项目数据保存到Projects表中时,我希望Project_team生成另一个名为的表。它应包含以下字段:

(project_id, team_member_id)

因此,例如,如果我输入诸如 (Project Title="ERP",Created Date="16/2/1013" ,Project Manager="XYZ") 之类的数据,我应该有另一个表 project_team (project_id=1, team_member_id=1)。

它会是自我多对多关系还是其他关系?我是否应该为 Team_member 制作另一个 bean,然后我必须执行多对多?

4

1 回答 1

1

Team您需要创建一个联结表来处理 a和 a之间的多对多关联Project,但是您不需要此联结表的 bean 或类。PROJECT以下示例将在和之间创建单向关联PARTICIPANT。您需要创建一个TEAM_MEMBERorPARTICIPANT表才能执行此关联。

项目.java

public class Project{

@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, targetEntity = Participant.class)
@JoinTable(name = "PROJECT_TEAM", joinColumns = { @JoinColumn(name = "TEAM_MEMBER_ID", referencedColumnName = "PROJECT_ID") }, 
inverseJoinColumns = { @JoinColumn(name = "PARTICIPANT_ID", referencedColumnName = "PARTICIPANT_ID") })

    private List<Participant> team = new ArrayList<Participant>();

    //Accessors - get/setTeam method
}

此答案假定以下数据模型已到位:

CREATE TABLE PROJECT(
   PROJECT_ID int,
   PROJECT_TITLE varchar(50),
   CREATED_DATE DATE,
   PROJECT_MANAGER varchar(50)
);

CREATE TABLE PARTICIPANT(
   PARTICIPANT_ID int,
   NAME varchar(50),
   PROJECT_ID int
);

CREATE TABLE PROJECT_TEAM(
   PROJECT_ID int,
   PARTICIPANT_ID int
);
于 2013-02-16T09:29:22.360 回答