0

当我映射相同的实体时,就像这里回答的那样:

Hibernate 与同一实体的多对多关联

在“tbl_friends”表中,我有相同含义的行。例如,我有 id=1 的用户和 id=2 的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行

1-2
2-1

是否有可能使用 Hibernate 或 JPA 注释以某种方式在一行(1-2 或 2-1)中建立这种关系?

4

1 回答 1

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);
   }
}
于 2013-02-21T10:14:20.033 回答