1:多对多关系中如果没有设置级联删除而是简单的
@ManyToMany(cascade={CascadeType.REFRESH,CascadeType.MERGE},fetch=FetchType.LAZY)
@JoinTable(name="roleaction",inverseJoinColumns={@JoinColumn(name="roleId")},joinColumns={@JoinColumn(name="actionId")})
private Set<Role> roles = new HashSet<Role>(0);//角色集合多对多关联
因为有set<actions>集合所以每当删除一个action的时候,中间roleaction也删除了这个actionID相关的值,那只是因为集合中有这个值并且roleaction属于action
2:当设置了级联删除的时候
@ManyToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY)
@JoinTable(name="roleaction",inverseJoinColumns={@JoinColumn(name="roleId")},joinColumns={@JoinColumn(name="actionId")})
private Set<Role> roles = new HashSet<Role>(0);//角色集合多对多关联
当删除某一个action的时候,那么会在roleaction中查找到其role的id然后就会全部删除role有关的action,所以级联删除最好不用。