当我映射同一个实体时,如下所示:
Hibernate many-to-many association with the same entity
在“tbl_friends”表中我有相同含义的行。例如,我有id = 1的User和id = 2的User。在“tbl_friends”表中,当它们作为朋友链接时,我有两行
1-2
2-1
是否可以使用Hibernate或JPA anotations以某种方式将这种关系放在一行(1-2或2-1)?
答案 0 :(得分:0)
不,你不能,因为这两行没有相同的含义。一行是说PersonA是PersonB的朋友,另一行是PersonB是PersonA的朋友。从功能上讲,在你的例子中,这两个关系可能具有相同的含义,但在数据库层面并非如此(友谊并不总是相互的...这很难过)。您唯一能做的就是将其隐藏在API中:
public class Person {
private Set<Person> friends = new HashSet<Person>();
public void addFriend(Person person) {
friends.add(person);
person.getFriends().add(this);
}
}