我使用相同的實體創建了關係@ManyToMany。從@ManyToMany列表中刪除對象的正確方法
這裏是我的實體:
@Entity
@Table(name = "user")
public class User extends BaseEntity implements Serializable {
...
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "table_friends", joinColumns =
@JoinColumn(name = "userId"), inverseJoinColumns =
@JoinColumn(name = "friendId"))
private List<User> friends;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "table_friends", joinColumns =
@JoinColumn(name = "friendId"), inverseJoinColumns =
@JoinColumn(name = "userId"))
private List<User> friendsof;
我創建了幾個「用戶」,並將其添加到好友列表:
User u1 = new User();
User u2 = new User();
User u3 = new User();
u1.getFriends().add(u2);
u1.getFriendsof().add(u2);
u1.getFriends().add(u3);
u1.getFriendsof().add(u3);
當我從列表中刪除u1.getFriends().remove(u3)
的朋友,一切正常。但是當我想從數據庫u3.remove()
中刪除用戶時,u1的朋友仍然是一樣的,雖然已經在朋友的數據庫列表中是正確的。
- 可以在刪除用戶後以某種方式刷新列表嗎?
- 如果是這樣,我怎麼知道我需要刷新哪個朋友列表?
編輯:在我看來,我應該刪除(cascade = CascadeType.ALL),因爲當我刪除u1時,刪除所有配對的成員。這是正確的行爲?
所有級聯我已經刪除。說到刪除,我使用EntityManager em.remove(u)。但它並不像我想象的那樣工作,因爲在em.remove(u3)之後,當我檢查數據庫(由MySQL管理員)時,u3不存在,但它仍存在於u1.friends中。重新啓動程序後消失。任何想法爲什麼這麼晚? – galica 2011-12-28 11:04:57
嗯,這很奇怪。我試圖刪除我的應用程序中的條目,並且所有關係都已正確更新。 ^^我認爲你應該用這個奇怪的行爲更新你的問題。我相信其他人能夠幫助你 – 2011-12-28 11:45:10
你能分享你是如何做到的嗎? – galica 2011-12-28 11:54:12