我正在嘗試與@JoinTable
創建一對多關係。代碼的工作原理和做它應該做的,但是,有沒有辦法添加更多的列到連接表?這將是一個需要某種歷史記錄的業務應用程序,所以我需要在連接表中創建/更新字段,如add_user
,update_user
,timestamp
。有沒有一種優雅的方式來與Java做到這一點,而不通過改變表格添加額外的字段?如果有,如何優雅地編輯這些數據,可以說我增加了新的關係,如何改變提到的領域的價值?我說優雅,因爲你總是可以做一些醜陋的事情,在這種情況下 - 創建關係,然後用兩個ID更新該關係的字段,如果有更漂亮,更多的Java方式,我很感興趣。JPA:@JoinTable中的其他字段
兩個實體的代碼:
@Entity
@Table(name="users")
public class Users {
int id;
String username;
private List<Jobs> jobs;
@OneToMany
@JoinTable(
name="users_jobs_rel",
joinColumns= @JoinColumn(name="user_id", referencedColumnName="user_id") ,
inverseJoinColumns= @JoinColumn(name="job_id", referencedColumnName="job_id")
)
public List<Jobs> getJobs() {
return jobs;
}
public void setJobs(List<Jobs> jobs) {
this.jobs = jobs;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_id", unique = true, nullable = false)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
@Entity
@Table(name="jobs")
public class Jobs {
int id;
String title;
@ManyToOne
private Users user;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "job_id", unique = true, nullable = false)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
在此先感謝。
您的回答是正確的,但我已經使用http://stackoverflow.com/questions/5127129/mapping-many-to-many-association-table-with-extra-columns解決我的問題。仍然+1,努力:) – Candyman