JPQL проверяют many-many отношения

Просто быстрый вопрос:

Существует объект (например, Пользователь), кто соединен с отношениями ManyToMany к тому же объекту (например, это отношение описывает "дружбу", и это симметрично).

Каков самый быстрый путь с точки зрения времени выполнения, чтобы проверить, является ли Пользователь A "другом" пользователя B? "Немой" путь состоял бы в том, чтобы выбрать целый Список и затем проверить, существует ли пользователь там, но это - очевидно, издержки.

Я использую JPA 2

Вот пример кода:

@Entity
@Table(name="users")
public class UserEntity {
    @ManyToMany(fetch = FetchType.LAZY)
    private List<UserEntity> friends;

    ....
}
5
задан Pascal Thivent 25 May 2010 в 11:47
поделиться

1 ответ

Если вы не хотите получать весь список, как насчет использования MEMBER OF ? Примерно так:

SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends

Это даст вам всех людей, у которых в качестве друга есть B. Если вы хотите ограничить результаты только A, добавьте условие в предложение WHERE.

Не уверен, что это это лучший способ достичь желаемого. "Тупой" подход на самом деле не выглядит таким уж глупым.

7
ответ дан 14 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: