При отложенной загрузке происходит сбой при инициализации коллекции того же объекта - PullRequest
0 голосов
/ 29 мая 2019

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

Проблема, с которой я столкнулся, заключалась в рекурсивной природе коллекций, когда не применялась ленивая загрузка, которая вызывает переполнение стека.

Программное обеспечение разработано с использованием JPA и JAX-RS.При тестировании для извлечения сущности я столкнулся с проблемой неправильной загрузки двух коллекций.

Я несколько раз пытался изменить отношения между сущностями и пытался изменить тип выборки, но это не помогло..

public class User implements Serializable {

    public static final String TABLE_NAME = "users";

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(nullable = false, columnDefinition = "bit default 0")
    private boolean isAdmin;

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<User> following = new ArrayList<>();

    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "following")
    private List<User> followers = new ArrayList<>();
}

При попытке получить сущность через API REST с Почтальоном, я получаю следующую ошибку:

org.jboss.resteasy.spi.UnhandledException:com.fasterxml.jackson.databind.JsonMappingException: не удалось лениво инициализировать коллекцию ролей: jea.kwetter.backend.domain.User.following, не удалось инициализировать прокси-сервер без сеанса (через цепочку ссылок: java.util.ArrayList [0] -> domain.User ["follow"])

...