Java Persistence wiki で説明されているものとまったく同じ結合テーブルで確立された ManyToMany 関係がありますManyToMany 関係の注釈の例. Employees & Projects の wiki の例を参照として使用すると、例にリストされているコードは、EMP、PROJ、および EMP_PROJ 結合テーブルの 3 つのテーブルを正常に作成します。私がやりたいことは、その EMP_PROJ 結合テーブルを別のエンティティで使用することです。EMP_PROJ 結合テーブルに列を追加したくありません。たとえば、管理者がプロジェクトを従業員に関連付けるとします。そのリストは EMP_PROJ に格納されます。私がやりたいことは、従業員のために、その従業員に関連付けられたプロジェクトのリストを返す ManagerReport と呼ばれる別のエンティティを作成することです。マネージャーは、開始日、終了日、業績など、従業員の各プロジェクトに関する特定の情報を入力できます。
以下は、Wiki ページから抜粋した表とサンプル コードです。
EMPLOYEE (table)
ID FIRSTNAME LASTNAME
1 Bob Way
2 Sarah Smith
EMP_PROJ (table)
EMP_ID PROJ_ID
1 1
1 2
2 1
PROJECT (table)
ID NAME
1 GIS
2 SIG
@Entity
public class Employee {
@Id
@Column(name="ID")
private long id;
...
@ManyToMany
@JoinTable(
name="EMP_PROJ",
joinColumns={@JoinColumn(name="EMP_ID", referencedColumnName="ID")},
inverseJoinColumns={@JoinColumn(name="PROJ_ID", referencedColumnName="ID")})
private List<Project> projects;
...
}