2015-10-13 25 views
0

我有一個具有子地圖的地圖列表的實體。當我想刪除這個實體,我有如何刪除與java地圖列表關聯的實體

不能刪除或更新父行:外鍵約束失敗(kobalt.category_categoryitem,

錯誤,我使用Hibernate是有人誰可以解決這個問題?

@Entity 
public class Product implements BaseEntity { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue 
    private int id; 
    private int kobilId; 
    private String code; 
    @Column(unique = true) 
    private long barcode; 
    private String productName; 
    @Column 
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    @Fetch(value = FetchMode.SUBSELECT) 
    @Cascade(org.hibernate.annotations.CascadeType.DELETE) 
    private Map<Category, CategoryItem> itemList; 
+1

看起來你的代碼沒有引用錯誤。因爲沒有屬性category_categoryitem – Jens

回答

0

貌似關係結構是不正確的,你的情況,當你試圖刪除外鍵對應的值,它不能刪除主鍵對應的值。在級聯規則的關係應該be lik e當你刪除主鍵相應的屬性時,它應該刪除所有外鍵對應的屬性。但不能相反。這是你的情況,我認爲如此嘗試糾正你的關係。例如,考慮員工具有地址陣列的「員工 - 地址」關係。所以關係應該像員工被刪除時一樣,所有相應的地址應該消失。但另一方面,如果關係不正確,並且您嘗試刪除地址,則無法刪除員工,因此您會得到例外情況。