我的實體:刪除休眠與多重關係
@Entity
public class User{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "userId")
private Long id;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<UC> owned = new ArrayList<UC>();
}
@Entity
public class UC{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JoinColumn(name = "ukId")
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "userId")
private User user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "catId")
private Cat cat;
}
@Entity
public class Cat{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "catId")
private Long id;
@OneToMany(mappedBy = "cat", cascade = CascadeType.ALL)
private List<UC> owned = new ArrayList<UC>();
}
因此,這裏是我的問題,實際上是少數人。
問題1:
我刪除,我給自己定cascadeType.All在貓的擁有列表上的貓對象,所以當我刪除貓對象的所有記錄在UC貓將被刪除,但是我得到「刪除的對象將被級聯重新保存」,這是因爲我在UC中有另一個關係到用戶,他將UC存儲在列表中。當我從UC中刪除Cat對象和記錄時,我不想刪除User對象,因此在UC中設置@ManyToOne級聯是一個禁忌。我應該怎麼做呢?在刪除Cat之前,我應該從用戶擁有的列表中刪除所有UC實例嗎?如果這種情況我必須從其他列表中刪除實例,那麼我在UC中的關係比在這裏顯示的要多。
問題2:
類似的情況,但我得到了許多普通到多的關係我想刪除連接表中的記錄,而不刪除關係的另一面。
不知道,我完全明白了:你想刪除一個目錄實體,並自動刪除該貓UC表裏面的所有引用? – tigerjack89 2014-11-08 11:08:49
是的,但沒有刪除關係中的用戶或其他實體。當我在UC內部不使用級聯時,我會在用戶被刪除時收到錯誤。我只想刪除Cat中的Cat,UC記錄並更新Cat的用戶列表。 – 2014-11-08 11:13:37