我試圖運行下面的代碼,但我一直收到錯誤「無法合併已刪除的實體」。無法從實體bean中清除相關實體bean的列表
我的數據庫表如下所示:
banner
-id
banner_period
-id
-banner_id
-date
我的Java代碼:
Banner b = getEntityManager().find(banner.getId());
List<BannerPeriod> bps = b.getBannerPeriodList();
for (BannerPeriod bp : bps) {
getEntityManager().remove(bp);
}
// <-- removed code that adds periods here
b.setBannerPeriodList(bps);
getEntityManager().merge(b);
我似乎無法理解這一切的邏輯。任何人都可以解釋它是什麼,我錯過了嗎?我已經嘗試過搜索答案,但是我發現很難定義給出相關結果的關鍵字。
UPDATE:
橫幅實體:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "bannerId")
private List<BannerPeriod> bannerPeriodList;
BannerPeriod實體:
@JoinColumn(name = "banner_id", referencedColumnName = "id")
@ManyToOne(optional = false)
private Banner bannerId;
看着橫幅/ BannerPeriod關係將有助於映射定義。你可以發佈他們嗎? –
當然可以。該關係在數據庫中定義爲級聯。請參閱上面的更新。 –