ここで回答されたような同じエンティティをマッピングしている場合:
「tbl_friends」テーブルには、同じ意味の行があります。たとえば、id=1 のユーザーと id=2 のユーザーがいます。彼らが友達としてリンクされているときの「tbl_friends」テーブルには、2つの行があります
1-2
2-1
Hibernate または JPA アノテーションを使用して、この種の関係を 1 行 (1-2 または 2-1) で作成することは可能ですか?
ここで回答されたような同じエンティティをマッピングしている場合:
「tbl_friends」テーブルには、同じ意味の行があります。たとえば、id=1 のユーザーと id=2 のユーザーがいます。彼らが友達としてリンクされているときの「tbl_friends」テーブルには、2つの行があります
1-2
2-1
Hibernate または JPA アノテーションを使用して、この種の関係を 1 行 (1-2 または 2-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);
}
}