Hibernate ManyToOne级联添加但不删除

时间:2015-10-29 21:07:45

标签: java hibernate

我有一个自引用表,在我的对象模型中,对象只知道他们的父级,而不是他们的孩子。

我希望在创建子项时创建父节点。但我不希望删除子项时删除它们。 CascadeType.ALL仍然存在,但也会按预期删除。 CascadeType.PERSIST,不会删除,但也无法保留。

这可能还是我在寻找什么?我必须手动追踪持续存在的树吗?

hibernate注释:

import javax.persistence.ManyToOne;

@Entity
@Table(name = "NODE")
public class Node implements Cloneable
{   
    @Id
    @Column(name = "KEY")
    @SequenceGenerator(name = "NodeSeq", sequenceName = "NODE_SEQ", allocationSize=1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="NodeSeq")
    private long key;

    @ManyToOne (cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
    @JoinColumn(name="parentkey",referencedColumnName="key")
    private Node parent;

...
}

我正在使用javax.persistance注释和hibernate 4.3.7

解决方案更新 除了使用javax.persistence CascadeType之外,我还在使用hibernate session.save和saveOrUpdate。这是一个需要避免的错误解决方案。见mkyong

1 个答案:

答案 0 :(得分:0)

如果使用session.saveOrUpdate(node),可以使用hibernate注释@Cascade:

<input></input>