@ManyToMany映射是使用连接表完成的。在您的情况下,必须有一个Foo_User具有这些映射的表。即一个Foo_id和一个User_id列。(用各自的主键替换Foo_id和。也用where是 table和for )User_idFoo_UserTable1_Table2Table1FooTable2User
@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注释放入User和JoinTable放入,Foo因为这是对称的双向关系。