2012-03-12 67 views
0
更新对象

我有以下类:休眠执行删除查询时,我尝试在春天

@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=? 

为什么休眠做到这一点,我怎么能解决这个问题?

回答

0

好吧,得到它,当试图更新作者集是空的,所以Hibernate做了删除而不是更新。