首先,对不起我的英语。
所以,我正在使用hibernate与MS SQL Server一起工作,我遇到了一个问题。 我在我的数据库中有一个表的下一个映射:
@Entity(name = " ... ")
public class Entity extends BaseEntity implements Comparable {
@Id
@Column(name = "...")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "parent_entity_id", insertable = false, updatable = false)
private Integer parentId;
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST})
@JoinColumn(name = "parent_entity_id")
private Entity parent;
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE}, orphanRemoval = true)
private Set<Entity> children;
//other fields, setters, getters
}
这意味着,我的Entity
个对象可以有子节点,也是Entity
个对象。
所以,我的问题是我无法正确删除所有孩子的父母。当我尝试删除父,我得到一个SQL错误:
The DELETE statement conflicted with the SAME TABLE REFERENCE
那么,任何想法,如何解决这个问题?
答案 0 :(得分:0)
您在parent_entity_id和id之间定义了外键。将其设置为允许级联删除:删除父级将删除其所有子级及其所有子级等。
请确保您确实希望这种情况发生!