之前如何刷新關係我想刪除與另一個的@OneToMany關係的實體,成立這樣的:刪除實體
public class Dealership implements Serializable {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "dealership", orphanRemoval = true)
private Set<Car> cars;
}
public class Car implements Serializable {
@ManyToOne
@JoinColumn(name="co_id")
private Dealership dealership;
}
的事情是,當我刪除了經銷店,我只想刪除未售出的汽車。無論我嘗試什麼,Hibernate都會通過級聯刪除與經銷商並列的所有汽車。這是我一直在嘗試的。在這個例子中,我試圖將售出的汽車轉移到另一個經銷商,然後我刪除經銷商。這應該刪除經銷商,其僱員,並且只有未售出的汽車:
Session session = SessionManager.getSession();
Transaction tx = session.beginTransaction();
Dealership dealershipToDelete = (Dealership) session.load(Dealership.class, idDealership);
for(Car c: dealershipToDelete.getCars().stream().filter(c -> c.isSold()).toArray(Car[]::new)){
Dealership newDealership = (Dealership) session.load(Dealership.class, idNewDealership);
c.setDealership(newDealership);
dealershipToDelete.getCars().remove(c);
}
session.update(dealershipToDelete);
session.flush();
session.delete(dealershipToDelete);
tx.commit();
session.close();
但它總是刪除所有汽車。即使我設法讓Hibernate用新的經銷商來更新汽車。它更新它們,然後刪除它們。幫助將不勝感激。謝謝。
你並沒有將汽車添加到新的經銷商。你不會從他們的舊經銷商那裏取出汽車。 –
對不起,我忘了添加從舊經銷商刪除汽車的線。我在發佈之前已經測試過它。它仍然不起作用。 現在我沒有把它添加到新的關係。但現在,我加入這一行環路(在它的結束): 'newDealership.getCars()加(C);' 它拋出這個異常: 異常線程「main」組織。 hibernate.ObjectDeletedException:刪除的對象將被級聯重新保存(從關聯中刪除刪除的對象):[hibernate.entities.Car#14] – MatiasP
@MatiasMGS是你的問題解決? –