即使在Cascade All上也无法删除OneToOne

时间:2013-02-24 20:42:21

标签: mysql hibernate jpa

尝试删除onetoone时遇到问题。 所以我想删除与PageImage具有一对一关系的“Page”对象,但是如果失败,并且由于“PAGE_IMAGES__PAGES_FK”而告诉这是不可能的。

现在,我真的不明白这里有什么问题,我正在使用cascade all。

Hibernate 4.1 + Spring 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);失败,异常“约束失败”

1 个答案:

答案 0 :(得分:2)

在您的映射中,

PageImage是关系的所有者,因为mappedBy =“page”

因此,你有: 页面有对pageImage的引用 pageImage有对页面的引用

您尝试删除子项,因此异常。如果您尝试删除pageImage,它很可能会起作用。