jpa 自关联(例如:机构) 无法删除的问题。问题原型如下:
@ManyToOne
@JoinColumn(name="parentId")
private Organization parent;
@OneToMany(cascade=CascadeType.PERSIST,mappedBy="parent")
private List<Organization> children = Lists.newArrayList();
@JoinColumn(name="parentId")
private Organization parent;
@OneToMany(cascade=CascadeType.PERSIST,mappedBy="parent")
private List<Organization> children = Lists.newArrayList();
修改后如下:
@ManyToOne(cascade={CascadeType.REFRESH},optional = true)
@JoinColumn(name="parentId")
private Organization parent;
@OneToMany(cascade={CascadeType.REFRESH, CascadeType.REMOVE}, fetch = FetchType.EAGER,mappedBy="parent")
private List<Organization> children = Lists.newArrayList();
@JoinColumn(name="parentId")
private Organization parent;
@OneToMany(cascade={CascadeType.REFRESH, CascadeType.REMOVE}, fetch = FetchType.EAGER,mappedBy="parent")
private List<Organization> children = Lists.newArrayList();
在调用删除机构时,无法真实删除。分析原因为:没添加级联删除。