Hibernate ManytoMany 标注级联增删改查完整操作

本文详细介绍了在Hibernate中处理ManytoMany关系的级联增删改查操作,包括保存新增用户时新建角色、为用户绑定已有角色、删除用户时解除角色关系,以及限制只有未被任何用户绑定的角色才能被删除。重点强调了在User类的级联操作注解以及DAO中使用Session.merge的重要性,并提示了在没有级联操作时需要配置OpenSessionInView。
摘要由CSDN通过智能技术生成

我们在用户和角色的概念上经常要用到多对多关系本文综合全部情况统一进行说明

实现了的操作:

- 保存新增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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值