@ManyToMany
マッピングは結合テーブルを使用して行われます。あなたの場合、Foo_User
これらのマッピングを持つテーブルが必要です。つまり、Foo_id
aUser_id
と列です。(Foo_id
とUser_id
をそれぞれの主キーに置き換えます。また、とのテーブルはどこにあるFoo_User
かTable1_Table2
に置き換えます)Table1
Foo
Table2
User
@JoinTable
注釈を使用して、これらのデフォルトをオーバーライドできます。
@ManyToMany(mappedBy = "votedDownBy")
@JoinTable(name="User_Foo_Votedown",
joinColumns={@JoinColumn(name="User_ID")},
inverseJoinColumns={@JoinColumn(name="Foo_id")})
private Set<Foo> votedDown =new HashSet<Foo>();
@ManyToMany(mappedBy = "favouritedBy")
@JoinTable(name="User_Foo_Fav",
joinColumns={@JoinColumn(name="User_ID")},
inverseJoinColumns={@JoinColumn(name="Foo_id")})
private Set<Foo> favourites = new HashSet<Foo>();
と
@ManyToMany(mappedBy = "votedDown")
private Set<User> votedDownBy = new HashSet<User>();
@ManyToMany(mappedBy = "favorites")
private Set<User> favouritedBy = new HashSet<User>();
これは対称的な双方向の関係であるため、mappedBy
注釈を inUser
とJoinTable
inに入れることもできます。Foo