我们在用户和角色的概念上经常要用到多对多关系本文综合全部情况统一进行说明
实现了的操作:
- 保存新增User用户的时候保存新的Role
- 新增User用户绑定已有Role后保存关系
- 删除用户时删除跟角色的对应关系
- 只有角色没有对应任何用户的时候才能删除角色
1. 类注解
User类
@ManyToMany(cascade={CascadeType.MERGE})
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "USER_ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
private Set<Role> roles =new HashSet<Role>();
@ManyToMany(mappedBy="roles")
public Set<User> users;
说明:级联操作必须使用MERGE, 同时在保存中使用Session.merge. 否则操作中的第二条不能完成。会出现如下错误
session.saveOrUpdate(session.merge(user));
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before fl