Hibernate делает запрос на удаление, когда я пытаюсь обновить объект в Spring - PullRequest
0 голосов
/ 12 марта 2012

У меня есть следующий класс:

@Entity
@Table(name="tbl_books")
public class Book{
private int id_book;
private String isbn;
private Set<Author> authors;

@ManyToMany(cascade=CascadeType.ALL, fetch= FetchType.EAGER)
@JoinTable(name="tbl_books_tbl_authors",
            joinColumns={@JoinColumn(name="id_book")},
            inverseJoinColumns= {@JoinColumn(name="id_author")})    
public Set<Author> getAuthors() {
    return authors;
}
public void setAuthors(Set<Author> authors) {
    this.authors = authors;
}

Это функция в BookController для обновления информации о книге:

@RequestMapping(method=RequestMethod.POST)
public String dataBook(@Valid BookBean bb, BindingResult result){

    if (result.hasErrors()){
        return "redirect:/books/formBook";
    }

    booksService.saveBook(bb);

    return "redirect:/books";
}

В booksService у меня есть такая:

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void saveBook(BookBean lb) {
    DataParser dp = new DataParser();

    booksDAO.sBook(dp.fromBookBeanToBook(lb));

}

В booksDAO:

@Override
public void sBook(Book book) {
    sessionFactory.getCurrentSession().saveOrUpdate(book);
}

Затем, когда я пытаюсь обновить книгу из этой формы, Hibertate делает следующее:

Hibernate: update tbl_books set date=?, isbn=? where id_book=?
Hibernate: delete from tbl_books_tbl_authors where id_book=?

Почему Hibernate делает это и как это сделатьЯ это исправлю?

1 Ответ

0 голосов
/ 12 марта 2012

Хорошо, понял, когда пытался обновить набор авторов, он был пуст, поэтому Hibernate удалил вместо обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...