В настоящее время я занимаюсь разработкой платформы социальных сетей, в которой есть пользовательский объект.В этой сущности я хочу добавить две коллекции, которые представляют пользователей, которые следуют за текущим пользователем, и отдельную коллекцию, за пользователями которой следует пользователь.
Проблема, с которой я столкнулся, заключалась в рекурсивной природе коллекций, когда не применялась ленивая загрузка, которая вызывает переполнение стека.
Программное обеспечение разработано с использованием 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"])