2013-05-06 2 views
0

это мой POJO, Пользователь и книгине может обновить отношения многие ко многим в спящий режим

@Entity 
public class User { 
private int id; 
private String username; 
private String userage; 
private String useremail; 
private String usergender; 
private Set<Book> books = new HashSet<Book>(); 

@Id 
@GeneratedValue 
public int getId() { 
    return id; 
} 
public void setId(int id) { 
    this.id = id; 
} 
public String getUsername() { 
    return username; 
} 
public void setUsername(String username) { 
    this.username = username; 
} 
public String getUserage() { 
    return userage; 
} 
public void setUserage(String userage) { 
    this.userage = userage; 
} 
public String getUseremail() { 
    return useremail; 
} 
public void setUseremail(String useremail) { 
    this.useremail = useremail; 
} 
public String getUsergender() { 
    return usergender; 
} 
public void setUsergender(String usergender) { 
    this.usergender = usergender; 
} 

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
@JoinTable(name="user_book") 
public Set<Book> getBooks() { 
    return books; 
} 
public void setBooks(Set<Book> books) { 
    this.books = books; 
} 
public void addBooks(Book book) { 
    getBooks().add(book); 
} 
public void removeBooks(Book book) { 
    getBooks().remove(book); 
} 
} 

@Entity 
public class Book { 
private int bookid; 
private String bookname; 
private String bookauthor; 
private String bookstatue; 
private Set<User> users = new HashSet<User>(); 

@ManyToMany(mappedBy="books", fetch = FetchType.EAGER) 
public Set<User> getUsers() { 
    return users; 
} 
public void setUsers(Set<User> users) { 
    this.users = users; 
} 
@Id 
@GeneratedValue 
public int getBookid() { 
    return bookid; 
} 
public void setBookid(int bookid) { 
    this.bookid = bookid; 
} 
public String getBookname() { 
    return bookname; 
} 
public void setBookname(String bookname) { 
    this.bookname = bookname; 
} 
public String getBookauthor() { 
    return bookauthor; 
} 
public void setBookauthor(String bookauthor) { 
    this.bookauthor = bookauthor; 
} 
public String getBookstatue() { 
    return bookstatue; 
} 
public void setBookstatue(String bookstatue) { 
    this.bookstatue = bookstatue; 
} 
} 

в Dao файле: я хочу сделать следующую операцию:

public boolean userReturnBookInDB(Book bookBean, User userBean) { 
    // TODO Auto-generated method stub 
    boolean remove; 
    try { 
     begin(); 
     ***userBean.removeBooks(bookBean);***  
     getSession().save(userBean); 
     commit(); 
     remove = true; 
    } 
    catch (Exception e) { 
     remove = false; 
    } 
    finally {  
     close(); 
    } 
    return remove; 
} 

я могу сделать addBooks успешно, но когда я пытаюсь удалить книги, член в таблице соединений не изменится. надеюсь кто-то может мне помочь.

ответ

0

В следующих книгах свойств класса User вам необходимо добавить orphanRemoval = true для удаления сирот при сохранении пользователя.

@ManyToMany(mappedBy="books", fetch = FetchType.EAGER,orphanRemoval=true) 
public Set<User> getUsers() { 
    return users; 
} 
Смежные вопросы