Aktywne Wpisy
zgredinho +1
zartos 0
Hej, pytanie do mądrych ludzi.
Nigdy nie byłem na wyborach, ale chciałbym to zrobić przy tych które teraz będą. Kompletnie nie znam się na polityce i nie wiem na kogo najlepiej głosować. Krótko o mnie, +/- ćwierć wieku na karku, kawaler (prawiczek), wykształcenie wyższe, nie chcę mieć dzieci, bezrobotny i nie zamierzam pracować (sporo spadku i jeszcze więcej pieniędzy w ziemi), najbardziej lubię siedzieć w domu i nie obchodzi mnie co robią
Nigdy nie byłem na wyborach, ale chciałbym to zrobić przy tych które teraz będą. Kompletnie nie znam się na polityce i nie wiem na kogo najlepiej głosować. Krótko o mnie, +/- ćwierć wieku na karku, kawaler (prawiczek), wykształcenie wyższe, nie chcę mieć dzieci, bezrobotny i nie zamierzam pracować (sporo spadku i jeszcze więcej pieniędzy w ziemi), najbardziej lubię siedzieć w domu i nie obchodzi mnie co robią
Takie query działa (ale wywala blad ze nie moze zaladowac danych bo fetchtype.Lazy)
Natomiast przy tym wywala blad ze nie moze sparsowac query:
Jakie bedzie poprawne query? Chce wydostac Post.body z tabeli body danego usera (probowalem obiektem user i user_id filtrowac)
@Bruno_: pobrać w tej samej sesji
Komentarz usunięty przez autora
Mam dwie encje: User i Post. W encji Post mam relacje ManyToOne i joincolumn z userem w postaci jego id (kolumna user_id). FetchType.Lazy (czemu? patrz drugi komentarz od gory), czyli jak wczytuje z bazy danych usera i chce odwolac sie do jego postow to wywala blad bo polaczenie z baza danych jakby jest juz
Jeśli wykonujesz operacje na leniwie ładowanych zależnościach to hibernate je podciągnie w locie. Powinno pomóc chyba, że wychodzisz z transakcji i tam próbujesz pobrać tego usera.
https://github.com/Karolcz125/spring-forum/tree/dev
Gdybyś zrobił DTO dla tego obiektu i przepisał z encji do niego wartości w transakcji to powinno działać.
Chociaż w tym wypadku najlepiej byłoby stworzyć query z joinem żeby uniknąć problemu n+1.
Select p from Post p JOIN FETCH p.user u
where u.id=?1
Ogólnie przesyłanie encji po całym systemie to trochę słaby design. Jak zmieni Ci się encja to od razu zmieni Ci się zwracany json a to może złamać jakiś kontrakt. Powinieneś oddzielić warstwę prezentacji od biznesu i persystencji.
@kernelpan1c: dziala ale nie #!$%@?, caly czas failed to lazily initialize a collection of role
Tylko teraz będziesz mial problem z cykliczną zależnością:
Post bedzie mial usera->user będzie miał liste postów -> kazdy z postów bedzie mial usera itd..
Ale query działa i nie ma problemu z lazy loadingiem.
Teraz exception leci z :
dziekuje (。◕‿‿◕。)
PostController(UserService userService) i go oplatasz?
Nie łatwiej dać @Autowired na tym private UserService userService?
Punkt 3.3
https://www.baeldung.com/spring-autowire
Taka konwencja, nic nie poradzisz ¯_(ツ)_/¯
1. Wrzucanie @Autowired na pola klasy w konsekwencji prowadzi do tworzenia duzych, skomplikowanych obiektów z mnóstwem zależności
2. Jeśli masz jedyny konstruktor na klasie i nie jest to konstruktor domyślny, to znaczy, że nie jesteś w stanie utworzyć tej klasy bez tych zależności, a to znaczy, że ta klasa prawdopodobnie nie może istnieć bez tych zależności
https://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration <- 5 rozdział
Będzie chociażby w testach. Poza tym, jeśli raz ustalisz jakieś zasady na projekcie to musisz ich przestrzegać wszędzie.