码迷,mamicode.com
首页 > 其他好文 > 详细

多对多manytomany

时间:2017-05-06 23:01:21      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:turn   cad   value   remove   ret   ssi   string   session   long   

----------------------多对多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

标签:turn   cad   value   remove   ret   ssi   string   session   long   

原文地址:http://www.cnblogs.com/beenupper/p/6818715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!