双向一对多

Posted -EASY-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双向一对多相关的知识,希望对你有一定的参考价值。

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表:

 

以上是关于双向一对多的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate一对多单向(双向)关联映射

hibernate中配置单向多对一关联,和双向一对多

双向一对多

hibernate 一对多双向的问题~~~

Hibernate JPA双向一对多结果与约束冲突异常

jpa休眠一对多双向[重复]