Wpis z mikrobloga

#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
  • 9
@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 komentarzy i
@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.

private List comments; = new ArraY....

private setComments(Comment comment) {
this.comments.add(comment);
}
@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 a kolumn @Column?

4. Service oznaczaj anotacją @Transactional

5. Pamiętaj że poszczególne bazy danych mają zastrzeżone różne słowa kluczowe, na postgresql przykładowo nie utworzysz tabeli dla entity o nazwie User bo user to
@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, ale kolejna dobra uwaga
3 - done
4