• 双向一对多


    1.在一的一方实体类里添加多的一方的集合

    public class Dept {
        private Integer deptNo;
        private String deptName;
        
        //加入员工集合
        private Set<Emp> emps=new HashSet<Emp>();
        
        
        public Set<Emp> getEmps() {
            return emps;
        }
        public void setEmps(Set<Emp> emps) {
            this.emps = emps;
        }
        
        
        
        public Integer getDeptNo() {
            return deptNo;
        }
        public void setDeptNo(Integer deptNo) {
            this.deptNo = deptNo;
        }
        public String getDeptName() {
            return deptName;
        }
        public void setDeptName(String deptName) {
            this.deptName = deptName;
        }

    2.双向的一对多需要在一的一方的小配置里添加<set></set>元素:

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        
    <hibernate-mapping package="cn.a.happy">
         <class name="Dept" table="DEPT">
            <id name="deptNo">
            <!-- native   数据库方言的可移植性 -->
               <generator class="sequence">
                   <param name="sequence">SQE_NUM</param>
               </generator>
            </id>
            
            <property name="deptName"/>
            
            <!-- 
                inverse="false" 主动方 维护关联关系
                inverse="true" 被动方 不维护关联关系(不干扰Emp主键生成)
             -->
             <!-- 一对多 -->
            <set name="emps" cascade="save-update,delete" inverse="true" >
                <key column="deptNo"/>    <!-- 一的一方的外键 -->
                <one-to-many class="Emp"/>    <!-- 外键的成员类型 -->
            </set>
            
        </class>
    </hibernate-mapping>

    测试类:

    /**
             * 双向一对多关联测试
             * 添加操作
             */
            @Test
            public void onVsMuchTest(){
                //构建一个部门
                Dept dept=new Dept();
                dept.setDeptName("就业部");
                
                //构建一个员工
                Emp emp=new Emp();
                emp.setEmpName("啦啦啦");
                
                //指定员工隶属部门
                
                dept.getEmps().add(emp);
                
                //save()
                session.save(dept);
                session.save(emp);
                
            }

    测试成功:

    看一下数据库:

    DEPT表:

    EMP表:

  • 相关阅读:
    Golang使用os/exec时产生僵尸(defunct)进程
    golang channel 用法总结
    Git常用方法
    插入排序,冒泡排序,快速排序,选择排序,归并排序 C++代码实现
    Linux 系统安装golang
    Linux 压缩解压常用命令汇总
    云主机挂载硬盘
    Linux服务器如何修改内核版本号
    关于FreePBX语音网关对接遇到的伤心事
    Asterisk13.23.1如何增加G723编码和G729编码
  • 原文地址:https://www.cnblogs.com/qingzhi/p/5838482.html
Copyright © 2020-2023  润新知