• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

RestCotroller, pobranie entity many to many.

Object Storage Arubacloud
0 głosów
181 wizyt
pytanie zadane 9 września 2019 w Java przez Adam Polak Początkujący (430 p.)

Dzień dobry,

Mam problem z restowym api. Prosta apka do zarządzania domową biblioteczką, z bazą mySql, do tego spring boot, spring data. Mam klasę Book która mam pola jak tytuł i opis, a do tego jest powiązana relacja many to many z klasami Author, Genre, Publisher. Nie jest to skomplikowanie, ale nie wiem jak obejść problem tego, że gdy np. chcę wziąć książkę o konkretnym id to dochodzi do sytuacji Could not write JSON: Infinite recursion (StackOverflowError); nested exception spring boot.

Book ma w sobie Sety jak authors, publishers które z kolei maja w sobie Set books. W ten sposób cały czas odczytuje, książkę, która ma autora/autorów, którzy maja książki, które maja autorów itp itd.

Czy jest ktoś w stanie nakierować jak powinienem to obejść, żeby w sytuacji gdy strzelam na odpowiedni endpoint, dostać książkę, jej autorów, gatunki itd.

 

4 odpowiedzi

+2 głosów
odpowiedź 9 września 2019 przez Aisekai Nałogowiec (42,190 p.)
Jeżeli dobrze zrozumiałem to są dwie opcje:

1. Użyć @JsonIgnore (lub @JsonIgnoreProperty nie pamiętam dokładnie) na danym polu którego nie chcesz wysyłać.

2. Zrobić jakieś customowe DTO i wysyłać DTO zamiast @Entity.

Które wybrać? Ja bym wybrał raczej DTO'sy: https://stackoverflow.com/questions/36174516/rest-api-dtos-or-not
0 głosów
odpowiedź 9 września 2019 przez tangarr Mędrzec (154,860 p.)
A nie możesz po prostu pobrać samych identyfikatorów autorów, bez zagnieżdżania całych obiektów?
komentarz 9 września 2019 przez Adam Polak Początkujący (430 p.)
Niestety nie do końca orientuję się jak to zrobić.
0 głosów
odpowiedź 9 września 2019 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

Robiłem coś identycznego w tym projekcie. Co prawda sa inne modele ale zasada ta sama. 

0 głosów
odpowiedź 15 września 2019 przez kejm_ Bywalec (2,310 p.)
Złota zasada, nie przekazujemy encji!

Dtosy i Mapper do nich to podstawa totalna. Może być Dozer, ale tu trzeba rozumieć mechanizm refleksji, polecam poczciwego Mapstrukcika ;) Dodatkowo warto rozwiązywać problemy na jak najniższej warstwie. Dobrze robić w repo custom query, które przyjmuje jakiegos param id i zwraca wymagane dane.

Podobne pytania

0 głosów
0 odpowiedzi 146 wizyt
pytanie zadane 26 sierpnia 2021 w Java przez DziQu Początkujący (420 p.)
0 głosów
0 odpowiedzi 116 wizyt
pytanie zadane 28 listopada 2018 w Java przez mycha Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 151 wizyt
pytanie zadane 26 grudnia 2020 w C# przez Szyszka Gaduła (3,490 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...