我找到了可能的解决方案,但是...我不知道这是否是一个好的解决方案。
@Entity
public class Role extends Identifiable {
@ManyToMany(cascade ={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(name="Role_Permission",
joinColumns=@JoinColumn(name="Role_id"),
inverseJoinColumns=@JoinColumn(name="Permission_id")
)
public List<Permission> getPermissions() {
return permissions;
}
public void setPermissions(List<Permission> permissions) {
this.permissions = permissions;
}
}
@Entity
public class Permission extends Identifiable {
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(name="Role_Permission",
joinColumns=@JoinColumn(name="Permission_id"),
inverseJoinColumns=@JoinColumn(name="Role_id")
)
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
我已经尝试过了,并且有效。删除角色时,关系也将被删除(但不删除权限实体),删除权限时,与角色的关系也将被删除(但不删除角色实例)。但是我们两次映射单向关系,并且两个实体都是该关系的所有者。这会导致一些问题休眠吗?哪种类型的问题?
谢谢!
上面的代码来自另一个相关的帖子。