Просто быстрый вопрос:
Существует объект (например, Пользователь), кто соединен с отношениями ManyToMany к тому же объекту (например, это отношение описывает "дружбу", и это симметрично).
Каков самый быстрый путь с точки зрения времени выполнения, чтобы проверить, является ли Пользователь A "другом" пользователя B? "Немой" путь состоял бы в том, чтобы выбрать целый Список и затем проверить, существует ли пользователь там, но это - очевидно, издержки.
Я использую JPA 2
Вот пример кода:
@Entity
@Table(name="users")
public class UserEntity {
@ManyToMany(fetch = FetchType.LAZY)
private List<UserEntity> friends;
....
}
Если вы не хотите получать весь список, как насчет использования MEMBER OF
? Примерно так:
SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends
Это даст вам всех людей, у которых в качестве друга есть B. Если вы хотите ограничить результаты только A, добавьте условие в предложение WHERE.
Не уверен, что это это лучший способ достичь желаемого. "Тупой" подход на самом деле не выглядит таким уж глупым.