您需要创建一个联结表来处理Team
和Project
之间的多对多关联,但是您不需要此联结表的bean或类。以下示例将创建PROJECT
和PARTICIPANT
之间的单向关联。您需要创建一个TEAM_MEMBER
或PARTICIPANT
表以执行此关联。
Projects.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-16 09:07:52
例如,** project_id ** 1,1然后** participants_id **可以是2,3,所以团队(用户2和3)将用于项目(包含项目id和参与者id)的表ID 1)。现在你有?对不起,我不是以正确的格式提问。 – 2013-02-16 09:18:21
参与者如何与团队联系?我所追求的是这个团队表的结构,因为它改变了应该如何映射的东西。如果一个参与者有一个团队将被映射不同,如果参与者有1..n个团队。是否particpants_id = team_member_id? – 2013-02-16 09:19:09