nuker92
nuker92
#spring #java #naukaprogramowania #hibernate

Witajcie Mireczki, piszę sobie moją pierwszą aplikacje z użyciem Spring + Hibername, a mianowicie Blog. Natrafiłem jednak na przeszkodę z którą nie wiem za bardzo jak sobie poradzić, otóż każdy post (Item) może mieć maksymalnie jeden komentarz (Comment). Pierwszy komentarz się dodaje, natomiast drugi zastępuje ten poprzedni (przy pierwszym jest Insert Into w konsoli, natomiast przy drugim jest już update). Podejrzewam, że coś źle zrobiłem z ustawieniami bazy danych :/ czy ktoś by mógł spojrzeć i pokazać gdzie jest błąd?

Cały projekt na githubie: https://github.com/nuker92/MyBlog

Klasy tworzące bazę danych: https://github.com/nuker92/MyBlog/tree/master/src/main/java/com/ochodek/blog/entity

JSP odpowiedzialny za dodawanie oraz wyświetlanie komentarzy: https://github.com/nuker92/MyBlog/blob/master/web/WEB-INF/jsp/item-detail.jsp
1
  • Najlepsze
  • Wszystkie komentarze
badAttitude
@nuker92 sprawdź czy obiekt klasy Comment w metodzie do zapisu komentarza nie ma czasem ustawionego id :)
1
l.....r
l.....r
@nuker92:
Po 1
zainstaluj sobie plugin .gitignore i wrzuć tam folder .idea i plik IDE .iml
2. W przypadku usera, po co ci ID numeryczne, lepiej zrobić name jako ID.

3. Dlaczego nie oznaczasz encji anotacją @Table
1
l.....r
l.....r
@nuker92: to samo z entitymanager
jeżeli chcesz zostać na hibernate 4, najnowsza wersja to 4.3.11.Final, jeżeli chcesz przejść na hibernate 5, 5.0.4.Final
1
bsmlody2030
bsmlody2030
@nuker92: Według mnie powinnieneś poprwaić kawałek kodu z załącznika w klasie entity/User.java
0
srgs
@nuker92: a nie przesyłasz komentarza z idkiem? nie powinieneś mieś jakiegoś CRUDa?
0
nuker92
nuker92
@bsmlody2030: Ale co jest źle z tym kawałkiem kodu? Tak właściwie to na stan teraźniejszy nie korzystam z tych metod (a może to źle? ale nie wiem jak to poprawić). Przy zapisywaniu komentarza ustawiam mu użytkownika (User), date (publishedDate), post (Item)i zapisuje do repozytorium komentarzy (CommentRepository)

@srgs: przesyłam komentarz z id Postu oraz nazwą użytkownika który komentuje,

Kontroler tego jsp jest tutaj: https://github.com/nuker92/MyBlog/blob/master/src/main/java/com/ochodek/blog/controller/IndexController.java (ostatnia metoda odpowiada za odbieranie
0
bsmlody2030
bsmlody2030
@nuker92 : Chodzi o to żebyś przekazywał obiekt Comment, a nie całą liste. Wtedy w istniejącej już klasie User gdzie posiadasz zainicjalizowaną listę dodajesz nowy komentarz.

Jak to wygląda: przekazujesz całą liste i za każdym razem w niej masz aktualny obiekt czyli ten najnowszy komentarz.

Jak powinno być: przekazujesz komentarz i jest dopisywany do istniejącej listy.
0
nuker92
nuker92
@badAttitude: miałeś racje :) widać w ścieżce "/item-detail/{id}" to id automatycznie sobie przypisywał jako id komentarza, wystarczyło zmienić na itemID i już się ładnie przypisuje. No nic kolejna lekcja na drodze zostania programistą :)
Dziękuje za pomoc :)

@lerner:
1 - done, bardzo dobry pomysł
2 - Jak skończę projekt to to poprawię, bo teraz jednak bardzo dużo zależy od tego id,
0
s.....a
s.....a
@nuker92: ad 2 to dość kontrowersyjna uwaga, zostaw id w spokoju :)

Hasło do googlania 'surrogate vs natural key' , poczytaj i wtedy podejmij decyzje co wolisz.
0