Hibernate多对多映射同一个实体

时间:2013-02-21 09:35:49

标签: hibernate jpa many-to-many

当我映射同一个实体时,如下所示:

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)?

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);
   }
}