2013-02-24 94 views
1

嘗試刪除onetoone時出現問題。 所以我想刪除與PageImage具有一對一關係的「Page」對象,但是如果失敗,並且告訴由於「PAGE_IMAGES__PAGES_FK」,這是不可能的。OneToOne即使在級聯上也無法刪除全部

現在,我真的不明白這裏有什麼問題,我使用級聯所有。

的Hibernate 4.1 +春季3.1 + Mysql的

@Entity 
@Table(name = "PAGES") 
public class Page 
.... 
@NotNull 
@BatchSize(size = 200) 
@OneToOne(mappedBy = "page", fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false) 
public PageImage getImage() { 
    return image; 
} 
.... 


@Entity 
@Table(name = "PAGE_IMAGES" 

@NotNull 
    @OneToOne(fetch = FetchType.LAZY, optional = false) 
    @JoinColumn(name = "PAGE_ID", nullable = false, updatable = false) 
    @ForeignKey(name = "PAGE_IMAGES__PAGES_FK") 
    public Page getPage() { 
     return page; 
    } 

entityManager.remove(myPage);失敗,異常 「約束失敗」

在映射PageImage
+0

刪除不必要的關聯,使用刪除 - 級聯。 – 2013-02-24 20:55:40

+0

你是什麼意思的不必要的協會?不應該Cascade =全部完成所有工作(也刪除pageImage)?謝謝 – 2013-02-24 21:05:23

+0

確保您已在數據庫表中爲ON DELETE提供級聯。 – MGPJ 2013-02-25 09:32:18

回答

2

是因爲的mappedBy = 「頁面」

因此

關係的所有者,您有: 頁面對頁面有引用圖片 pageImage有頁面參考

您嘗試刪除子項,從而導致異常。很可能如果你嘗試刪除pageImage,它將會正常工作。