我希望 UserAcounts 能够拥有许多 UserGroups。并且所有组都可以拥有许多 Users。并且有一个联接表。我希望在删除用户帐户时删除联接表中的用户帐户和用户组之间的关系。
实际上我想使用“删除级联”。不幸的是,在多对多关系中,我无法运行它。我尝试了很多方法,但没有找到解决方案。
注意:我只想使用删除级联删除关系
有可能有办法做到这一点吗?
这是我的休眠课程
@SuppressWarnings("serial")
@Entity
@Table(name = "USER_ACCOUNT")
public class UserAccount implements Serializable {
@Id
@Column(name = "ID")
@GeneratedValue
private Long id;
@Column(name = "NAME")
private String name;
@Column(name = "SURNAME")
private String surname;
@Column(name = "EMAIL")
private String email;
@Column(name = "USER_NAME")
private String username;
@Column(name = "PASSWORD")
private String password;
@Column(name = "ENABLED")
@Type(type = "yes_no")
private boolean enabled;
@Column(name = "ACCOUNT_NON_EXPIRED")
@Type(type = "yes_no")
private boolean accountNonExpired;
@Column(name = "CREDENTIALS_NON_EXPIRED")
@Type(type = "yes_no")
private boolean credentialsNonExpired;
@Column(name = "ACCOUNT_NON_LOCKED")
@Type(type = "yes_no")
private boolean accountNonLocked;
@Column(name = "ENTRY_DATE")
private Date entryDate;
@Column(name = "UPDATE_DATE")
private Date updateDate;
@Column(name = "LAST_LOGIN_DATE")
private Date lastLoginDate;
@Column(name = "LOCAL")
private String local;
@ManyToMany(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
@JoinTable(name = "ACCOUNT_GROUP", joinColumns = { @JoinColumn(name = "ID") }, inverseJoinColumns = { @JoinColumn(name = "GROUP_ID") })
private List<UserGroup> userGroups;
@SuppressWarnings("serial")
@Entity
@Table(name = "USER_GROUP")
public class UserGroup implements Serializable {
@Id
@Column(name = "GROUP_ID")
@GeneratedValue
private Long id;
@Column(name = "GROUP_NAME")
private String name;
@Column(name = "GROUP_DESCRIPTION")
private String description;
我研究了太多,但无法运行。
当您删除用户时,设置为 DELETE 的级联不会删除组和用户之间的关联。它会删除组本身。
要删除关联,您只需在删除用户之前从用户组集合中删除所有组:
user.getUserGroups().clear();
session.delete(user);
从用户中删除组将从连接表中删除关联。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)