Допустим, у меня есть сущность Person.
И человек может иметь отношения «Дружба» с одним или несколькими другими людьми.
Я бы смоделировал это, скажем, с помощью записи в таблице
| Person Id 1 | Person Id 2 |
Но семантически, если человек 1 дружит с человеком 2
| Person Id 1 | Person Id 2 |
, это то же самое, что сказать, что человек 2 дружит с человеком 1
| Person Id 2 | Person Id 1 |
Конечно, есть много способов в Java и в запросе, например, ((person1=x AND person2=y) OR (person1=y AND person2=x))
, чтобы я удостоверился, что эта эквивалентность соблюдается. Но какой более эффективный способ смоделировать этот в самой базе данных и в последующем репозитории, JPQL Queries и т. Д. c.
Подводя итог ; Я хочу иметь возможность проверить, дружит ли человек 1 с человеком 2, без двух проверок - (дружит ли человек 1 с человеком 2) или (дружит ли человек 2 с человеком 1). Идиоматично, я просто хочу сказать (являются друзьями человека 1 и человека 2).
Я хочу неявно смоделировать эквивалентность: А дружит с В, тогда Б автоматически дружит с А.