我有一个自引用表,在我的对象模型中,对象只知道他们的父级,而不是他们的孩子。
我希望在创建子项时创建父节点。但我不希望删除子项时删除它们。 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
答案 0 :(得分:0)
如果使用session.saveOrUpdate(node),可以使用hibernate注释@Cascade:
<input></input>