Как избежать взятия объекта из запроса за пределами определенной глубины в java-е?

Я пытаюсь реализовать "следующий механизм" в моем приложении Java EE. У меня есть профиль сущности, который содержит, помимо прочего, список, который представляет собой список профилей, за которыми следует пользователь. Ле отношение (@OneToMany).

Everithing это хорошо и звучит здорово, но у меня есть проблема. Такой запрос:

Query q = em.createQuery("SELECT p FROM Profile p WHERE p.id =:custId");

Вернуть профиль р, и пока что без проблем. Но я заметил, что у меня есть полный доступ моих следующих пользователей, а также следующих всех моих следующих пользователей, и так далее. Я не вижу выхода.

Я мог бы заменить список в массиве, который содержит только идентификатор, но только если это единственный выбор. Есть идеи? Могу ли я "остановить" запрос, не дав ей занять список следующих моих подписчиков?

1 ответ

Я думаю, что вам нужно реорганизовать свой API. Не храните список подписчиков в классе профиля, создайте сервис, например ProfileService, и вызывайте его всякий раз, когда вы хотите получить доступ к списку подписчиков для определенного профиля.

public class ProfileService {

    public List<Profile> getFollowers(Profile profile) {
       Query q = em.createQuery("SELECT p FROM Profile p WHERE p.id =:custId");
       .....
    }
}
Другие вопросы по тегам