Имеется связь OneToMany, У одного Region есть много Districts. Имеется простой REST контроллер, который возвращает все Region, но ответ приходит
{
"id": 6,
"name": "Test",
"districts": null
}
Districts - null. Это неприятно.
@GetMapping("/regions")
public ResponseEntity<List> getAllRegions() {
return new ResponseEntity<>(regionService.getAllRegions(), HttpStatus.OK);
}
Юзаю JPA репозитории для доступа к данным в бд.
Часть Region
@OneToMany(mappedBy = "regions", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<District> districts;
Часть District
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "region_id")
private Region region;
В Бд у таблицы districts добавился столбец region_id в котором ID региона, к которому относится. Собственно сам вопрос, как мне вытягивать для GET маппинга Регионы, чтобы дистрикты тоже подгружались. Ну и забегая наперед, как мне добавлять POST маппингом дистрикты лучше? Пробовал
{
"name": "Distr",
"regionId": 1
}
Предварительно код подшаманив, в бд пишет все, вопросов нет. Указал явно ID Региона и название дистрикта, верно ли так?
P.S Понял, что проблема в FetchType, а точнее оно не подгружает все как надо. Если поменять на EAGER, идет
[{"id":1,"name":"Kiyv","districts":[{"id":7,"name":"qqqq","regions":{"id":1,"name":"Kiyv","districts":[{"id":7,"name":"qqqq","regions":{"id":1,"name":"Kiyv","districts
до stackoverflow, если сделать set дистриктов transient, то null.
Конечно, у вас ленивая подгрузка связей установлена нужен EAGER и маппинг в District у вас "region".
Измените на :
@OneToMany(mappedBy = "region", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<District> districts;
и все должно заработать, если остальное все настроено верно.
Или, если вы хотите Lazy, то можно подтянуть данные:
@Query("SELECT r FROM Region r JOIN FETCH r.districts WHERE r.id = (:id)")
Region findById(@Param("id") int id);
в вашем сервисе. И тода подтянутся остальные регионы.
Всем спасибо, советовали не в то направление. Всем, кто советовал EAGER - зачем, если мне нужно Lazy? Решил аннотацией @JsonIgnore над сетом дистриктов и все заработало
Напишите программу, которая загружает матрицу и выполняет указанные преобразования указанного массива на 90, -90, 90 градусовПреобразования...
Можно ли добавить собственный элемент управления в SceneBuilder, что бы кроме стандартных (например TextField) в списке было MyTextField?
Программа должна подсчитывать уникальные чисел в массиве, например
Дан массив A длины (n+1), содержащий натуральные числа от 1 до nНайти любой повторяющийся элемент за время O(n), не изменяя массив и не используя...