当我映射相同的实体时,就像这里回答的那样:
在“tbl_friends”表中,我有相同含义的行。例如,我有 id=1 的用户和 id=2 的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行
1-2
2-1
是否有可能使用 Hibernate 或 JPA 注释以某种方式在一行(1-2 或 2-1)中建立这种关系?
当我映射相同的实体时,就像这里回答的那样:
在“tbl_friends”表中,我有相同含义的行。例如,我有 id=1 的用户和 id=2 的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行
1-2
2-1
是否有可能使用 Hibernate 或 JPA 注释以某种方式在一行(1-2 或 2-1)中建立这种关系?
不,你不能,因为那 2 行没有相同的含义。一行是说 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);
}
}