您需要創建一個聯結表來處理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