0

ここで回答されたような同じエンティティをマッピングしている場合:

同じエンティティとの多対多の関連付けを休止状態にする

「tbl_friends」テーブルには、同じ意味の行があります。たとえば、id=1 のユーザーと id=2 のユーザーがいます。彼らが友達としてリンクされているときの「tbl_friends」テーブルには、2つの行があります

1-2
2-1

Hibernate または JPA アノテーションを使用して、この種の関係を 1 行 (1-2 または 2-1) で作成することは可能ですか?

4

1 に答える 1

1

これらの2行は同じ意味を持たないため、できません。1 つの行は、PersonA が PersonB と友達であり、もう 1 つの行は PersonB が PersonA と友達であると言っています。機能的に言​​えば、あなたの例では、これらの2つの関係は同じ意味を持つかもしれませんが、データベースレベルではそうではありません(友情は常に相互であるとは限りません...それは悲しいことです)。あなたができる唯一のことは、あなたの 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 に答える