多对多manytomany
Posted 曙光城邦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多对多manytomany相关的知识,希望对你有一定的参考价值。
----------------------多对多manytomany 要点: 多对多必须有mappedBy,让一个端维护关系 多对多会创建一张关系表,维护关系就是维护第三张表。 所以增加关系,则在集合中添加实体。删除关系,则从集合中删除实体。 mappedBy使一方丧失关系维护 @Entity public class User { @Id @GeneratedValue private long id; @Column(name="name") private String name; @ManyToMany(cascade=CascadeType.PERSIST,mappedBy="users") private Set<Role> roles = new HashSet<Role>(); } @Entity public class Role { @Id @GeneratedValue private long id; @Column private String name; @ManyToMany private Set<User> users = new HashSet<User>(); public String getName() { return name; } 删除用户139的ADMIN权限 User u = session.get(User.class,139L); Set<Role> roles = u.getRoles(); Iterator<Role> ites = roles.iterator(); while(ites.hasNext()) { Role r = ites.next(); if(r.getName().equals("ADMIN")){ r.getUsers().remove(u);//执行成功,删除关系,而不删除用户 //u.getRoles().remove(r);//执行失败,关系它不维护 } }
以上是关于多对多manytomany的主要内容,如果未能解决你的问题,请参考以下文章
关系/对象映射 多对多关系(@ManyToMany 注释)重新认识