JPA无法更新或删除父实体

时间:2017-04-30 11:35:47

标签: java jpa java-ee

我正在尝试使用JPA将有向图保存到数据库中,我可以在第一次创建实体,甚至在它们之间建立关联,但是一旦我尝试删除其中一个,它就会失败。

这些类的定义如下:

public class Node {
    @Id
    Long id;

    String name;

    Double weight;

    @OneToOne(fetch=FetchType.LAZY, optional = true)
    Node nextNode;

}

我不需要/这是双向关系。我也尝试将nextNode属性设置为null,然后合并,然后删除但它似乎不起作用并始终给出相同的错误:无法更新或删除父

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要确保您正在删除的节点未被其他节点引用。即将nextNode设置为null不在正被删除的节点中,而是在节点引用它。

使用hibernate anotation的可能解决方案:

@OnDelete(action=OnDeleteAction.CASCADE)

生成外键为:" ON UPDATE NO ACTION ON DELETE CASCADE;"