W trzeciej części zajmiemy się dodaniem kolejnej metody do interfejsu BookRepository, ale tym razem w oparciu i zapytanie skonstruowanie ręcznie w adnotacji @Query.

Dodamy relację @ManyToOne oraz @OneToMany – w naszym przypadku zakładamy, że:

  • książka posiada tylko jedną kategorię.
  • kategoria posiada wiele książek. 

Zaczynamy od dodania nowej klasy w pakiecie ‚model’ o nazwie Category:

@JsonIgnore – bez tej adnotacji, obiekty zapętliły by się. Wyobraźmy sobie, że patrzysz w duże lustro mając drugie duże lustro za plecami. 

Obiekt book posiada relację do category, a ta z kolei ma relację do book, która ma relację do category, która ma relację do book…. i tak dalej 😉

Unikniemy tego zjawiska, tworząc poprawne obiekty DTO i maper. Będziemy to robić w kolejnej części 😉

Teraz pora na dodanie pola ‚category’ do encji Book. Poniżej kompletna klasa Book już po dodaniu pola category.

Przeładujemy aplikację, aby upewnić się, że Hibernate poprawnie stworzy kolejną tabelę w bazie book_store.

Poniżej zrzut konsoli:

Za pomoca Intellij łączę się z bazą danych:

Najpierw klikam po prawej stronie w ikonę bazy danych:

następnie klikam plus, ukazuje się lista rozwijana.

Szukam mojej bazy danych i zatwierdzam:

Uzupełniam nazwę bazy danych, login i hasło.

Następnie testuję połączenie.

Po zatwierdzeniu powyższego okna, po prawej stronie ukaże się schemat bazy danych.

Klikam dwukrotnie w nazwę tabeli i uzupełniam dane:

To samo robię z tabelą books, ale dodaję tylko numer id kategorii, której odpowiada dana książka. Patrz poniżej:

W moim przypadku książka Pan Tadeusz, to kryminał 😉 

Testujemy działanie w Postman:

Repozytorium z kodem znajduje się tutaj (zip) tutaj (git)