hibernate关联关系的整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40285302/article/details/79949189

1、关联关系映射的步骤
    1.1关联关系的搭建  
            ---建表
            ---建实体
    1.2映射关联关系
    1.3使用测试            
2、映射关联关系
    1:1                    双向                                            单向
         *主表方:
            //关系属性                                        *主表方:
            //mappedBy="映射着外键的 对方中的属性"                //关系属性                                    
            @OneToOne(mappedBy="person51")                        @OneToOne(mappedBy="person51")
            private Passport passport51;                          @JoinColumn(name="person_id")//声明外键列是谁,自己维护外建
        *从表方:                                                 private Passport passport51;
            //关系属性                                        *从表方:
            @OneToOne//声明关系                                 //无关系属性
            @JoinColumn(name="person_id")//声明外键列是谁
            private Person person51;
                                        
    1:*                双向                            单向
        *主表方:                            *主表方:
           @OneToMany(mappedBy="user")          @OneToMany
        *从表方                                 @JoinColumn(name="user_id")
           @ManyToOne                        *从表方
           @JoinColumn(name="user_id")          无关系属性
           
        
    *    :*    
         //关系属性
        @ManyToMany02
        /*
         * name=关系表名称
         * joinColumns=关系表中,指向自己的外键
         * inverseJoinColumns=关系表中,指向对方的外键
         */
        @JoinTable(name="rel_s_c",
                   joinColumns={@JoinColumn(name="cour_id")},
                   inverseJoinColumns={@JoinColumn(name="stu_id")})
        *关系双方的映射,一致(双向都映射,单向只需一方映射 无主次)。        
        
3、注意事项:    
    3.1    1:1---删除时需要在对方解除关系(与方向无关) 从.get(主).set从(null)
               ---为主表添加从表维护关系 (与方向无关): 从表.setXXX(主表)//使得从表有外键来源
               ---级联保存双方维护关系(双向):  从表.setXXX(主表)  主表.serXXX(从表)
               ---级联保存双方维护关系(单向):  只需有外键的一方维护外键
           1:*---删除时不需要维护外键
               ---单向和双向的区别  --为主表附加从表 维护关系  主.set从(从)   session.update(主);
                                    --级联插入双方数据  维护关系   主.set从(从)
           *:*---为一方附加另一方  另一方.set(一方)  session.save(另一方)
               ---在已存在的双方之间搭建关系  一方.set(另一方) session.update(一方)
               ---级联保存  只在一方维护关系  A.set(B)
               ---单独删除一方无级联权限 
               ---级联删除:慎用=不用
    3.2    当更新 映射了外键的一方时,对象不能是new 出来的 (new 出来的对象关系不完整,
                  会导致hibernate去数据库中置空外键)
4、级联:
        查询级联默认,不受级联级别限制
              
              
              
              
    //获取表格选择行
                    var rows = $('#test1').datagrid('getSelections');
                    console.log(rows);
                    //判断是否选择行
                    if (!rows || rows.length == 0) {
                    $.messager.alert('提示', '请选择要删除的数据!', 'info');
                    return;
                    }
                    var parm;
                    //循环给提交删除参数赋值(音乐风格编码)
                    $.each(rows, function (i, n) {
                    if (i == 0) {
                    parm = "ids" + n.id;
                    } else {
                    parm += "&ids=" + n.id;
                    }
                    });
                    
                    $.messager.confirm('提示', '是否删除选中数据?', function (r) {
                    if (!r) {
                    return;
                    }
                    //提交
                    $.post('${pageContext.request.contextPath}/category/dropCategory', parm,
                    function (msg) {
                    if (msg.IsSuccess) {
                    $.messager.alert('提示', msg.Message, 'info', function () {
                    //重新加载当前页
                    $('#test').datagrid('reload');
                    });
                    } else {
                    $.messager.alert('提示', msg.Message, 'info')
                    }
                    });
                    });
                    
                    }          
              
              

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页