Hibernate nie zapisuje kolekcji do bazy danych

0

Cześć, mam problem z hibernate kod poniżej.

Author.java

@JoinColumn(name = "book")
    @ManyToOne
    private Book book;

Book.java

@OneToMany( mappedBy="book", cascade=CascadeType.ALL, fetch = FetchType.EAGER)
    private Collection<Author> authors = new ArrayList<>();

Gdy próbuje zapisać obiekt kasy Book do bazy leci zapytanie : Hibernate: insert into Author (book, firstName, lastName) values (?, ?, ?).
Problem jest taki, że w bazie danych nie chce zapisywać listy autorów dla książki i nie leci przy tym żaden błąd (zapisuje się wszystko oprócz listy).

Kod do zapisu:

public static void addBook(String title, String releaseDate, 
            String releaseNumber, List<Author> authors) {
        Session session = HibernateUtils.getSessionFactory().openSession();
        Transaction transaction = session.beginTransaction();
        
        Book book = new Book();
        book.setTitle(title);
        book.setReleaseDate(releaseDate);
        book.setReleaseNumber(releaseNumber);
        
        authors = new ArrayList<>();
        authors.add(new Author("aaa", "bbb"));
        book.setAuthors(authors);
        session.saveOrUpdate(book);
        transaction.commit();
        session.close();
    }

Wiem, że kiedyś zmagałem się z tym x godzin i okazała się jakaś bzdura, ale tam miałem Springa do pomocy, tu muszę mieć tylko czysty Hibernate.
Pozdrawiam.

0

sprobuj book.getAuthors().add

0

Nie działa, dalej nie tworzy w ogóle tej tabeli pośredniej.

0

Spróbuj najpierw INSERTnąć autora (w tej samej transakcji) może też jeszcze wcześniej ustawić książkę.

0

Też nic.

0

Dodam jeszcze, że aplikację odpalam na Glassfishu jako servlet + Netbeans IDE - jeśli to ma jakiekolwiek znaczenie.

0

https://howtoprogramwithjava.com/hibernate-onetomany-bidirectional-relationship/
W skrócie: nie ustawiłeś autorowi książki a masz ustawione mappedBy na stronę po której jest autor, więc to on jest "właścicielem relacji".

0

Zrobilem dokładnie wedlug powyższego linku, ale nadl nie działa coś..

0

Ok zadziałało, ale jest kolejny problem gdy dodaje książkę z autorem, a następnię kolejną z tym samym autorem to z pierwszej ksiązki tak jakby traci tego autora i przechodzi do drugiej ksiazki (w pierwszej książce usuwa się z listy).. Jakoś używałem już Hibernate pare razy i nigdy takich problemów nie miałem..

1 użytkowników online, w tym zalogowanych: 0, gości: 1