开心一笑: 会买水果的狗狗

    关注微信公众号

    QQ群:831045818

    app下载

    当前位置:首页> java > 技术文档 > 正文
    jpa 一对多
    发布时间:2020-07-15 15:27:52.0 浏览次数:
    //给定 一对多的bean 并且更新方式为全部
    @OneToMany(targetEntity=UrlAuthorityInfo.class,cascade=CascadeType.ALL)
    
    //关联ID配置
    //UrlAuthorityInfo的urlId 对应
    @JoinColumn(name="urlId",referencedColumnName ="id")
    private List<UrlAuthorityInfo> auth;
    
    /**
         * cascade表示级联操作,CascadeType.all是全部,一般用CascadeType.MERGE 更新,CascadeType.persist表示持久化即新增
         * 此类是维护关系的类,删除它,可以删除对应的外键,但是如果需要删除对应的权限就需要CascadeType.all
         * cascade:作用在本放,对于删除或其他操作本方时,对标注连接方的影响!和数据库一样!!
    */
    
    
    属性1: mappedBy="permissions" 表示,当前类不维护状态,属性值其实是本类在被标注的链接属性上的链接属性,此案例的本类时Permission,连接属性是roles,连接属性的类的连接属性是permissions 
    
            属性2: fetch = FetchType.LAZY 表示是不是懒加载,默认是,可以设置成FetchType.EAGER
    
            属性3:cascade=CascadeType.ALL 表示当前类操作时,被标注的连接属性如何级联,比如班级和学生是1对多关系,cascade标注在班级类中,那么执行班级的save操作的时候(班级.学生s.add(学生)),能级联保存学生,否则报错,需要先save学生,变成持久化对象,在班级.学生s.add(学生)
    
            注意:只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
            
           CascadeType.PERSIST (级联新建)只删除当前 不删除映射
           CascadeType.REMOVE (级联删除)
           CascadeType.REFRESH (级联刷新)
           CascadeType.MERGE (级联更新)中选择一个或多个。
           还有一个选择是使用CascadeType.ALL ,表示选择全部四项
            
            
            
    //url 权限
    /**
     * cascade表示级联操作,CascadeType.all是全部,
     * 一般用CascadeType.MERGE 更新,
     * CascadeType.persist表示持久化即新增
     * 此类是维护关系的类,删除它,可以删除对应的外键,但是如果需要删除对应的权限就需要CascadeType.all
     * cascade:作用在本放,对于删除或其他操作本方时,对标注连接方的影响!和数据库一样!!
     * id为当前bean id 
     */
    @OneToMany(targetEntity=UrlAuthorityInfo.class,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
    @JoinColumn(name="urlId",referencedColumnName ="id")
    private List<UrlAuthorityInfo> auth;
    
    
    //一对一 拿urlId查找UrlInfo里的内容,urlId对应 urlInfo的id
    @Entity
    @Table(name="user_authority")
    public class UserAuthorityInfo {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
    
        @Column(length=11)
        private Integer userId;
    
        //urlid
        @Column(length=11)
        private Integer urlId;
    
        //url的权限
        @Column(length=500)
        private String auth;
    
        //权限名称
        @Column(length=500)
        private String authName;
        
    
        //一对一 urlId与JoinColumn的id共存(主健),在后面加上insertable=false, updatable=false,
        //否则报错insertable=false, updatable=false
        @OneToOne(targetEntity=UrlInfo.class,cascade=CascadeType.REMOVE)
        @JoinColumn(name="urlId",insertable=false, updatable=false,referencedColumnName ="id")
        private UrlInfo urlInfo;


    关注"都市百货" 了解南陵

    微信咨询wanglf2r(不拉群 发广告者勿加)

    0
    0
    上一篇:南陵进一步加强防汛工作的通知 上一篇:第72集团军1000余名官兵奔赴无为抗洪

    评论已有0

    提交评论

    热门评论

    南陵新闻
    公示公告
    常用查询
    风光南陵
    走出南陵
    友情链接