@ManyToMany对自己来说相当令人困惑,因为您通常的建模方式与“hibernate”方式不同。您的问题是您缺少另一个收藏夹。
可以这样考虑-如果要“多对多”映射“作者” /“书”,则需要“书”上的“作者”集合和“作者”上的“书”集合。在这种情况下,您的“用户”实体代表关系的两端。因此您需要“我的朋友”和“朋友的”收藏集:
@ManyToMany
@JoinTable(name="tbl_friends",
joinColumns=@JoinColumn(name="personId"),
inverseJoinColumns=@JoinColumn(name="friendId")
)
private List<User> friends;
@ManyToMany
@JoinTable(name="tbl_friends",
joinColumns=@JoinColumn(name="friendId"),
inverseJoinColumns=@JoinColumn(name="personId")
)
private List<User> friendOf;
您仍然可以使用相同的关联表,但是请注意,join / inverseJon列在集合上交换。
“ friends”和“ friendOf”集合可能匹配,也可能不匹配(取决于您的“友谊”是否总是相互的),您当然不必在API中以这种方式公开它们,但这就是映射的方式它在hibernate状态。