Как избежать взятия объекта из запроса за пределами определенной глубины в 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");
.....
}
}