zoukankan      html  css  js  c++  java
  • Hibernate 映射一对一关联关系

    基于外键的方式:

      附上代码:

      

    public class Manager {
        private Integer mgrId;
        private String mgrName;
        private Department department;
    
        public Integer getMgrId() {
            return mgrId;
        }
    
        public void setMgrId(Integer mgrId) {
            this.mgrId = mgrId;
        }
    
        public String getMgrName() {
            return mgrName;
        }
    
        public void setMgrName(String mgrName) {
            this.mgrName = mgrName;
        }
    
        public Department getDepartment() {
            return department;
        }
    
        public void setDepartment(Department department) {
            this.department = department;
        }
    
    }
    Manager 类
    public class Department {
        private Integer deptId;
        private String deptName;
        private Manager manager;
    
        public Integer getDeptId() {
            return deptId;
        }
    
        public void setDeptId(Integer deptId) {
            this.deptId = deptId;
        }
    
        public String getDeptName() {
            return deptName;
        }
    
        public void setDeptName(String deptName) {
            this.deptName = deptName;
        }
    
        public Manager getManager() {
            return manager;
        }
    
        public void setManager(Manager manager) {
            this.manager = manager;
        }
    
    }
    Department 类
    <hibernate-mapping>
        <class name="hibernate.one2one.foreign.Department" table="DEPARTMENTS">
            <id name="deptId" type="java.lang.Integer">
                <column name="DEPT_ID" />
                <generator class="native" />
            </id>
            <property name="deptName" type="java.lang.String">
                <column name="DEPT_NAME" />
            </property>
            <many-to-one name="manager" class="hibernate.one2one.foreign.Manager" unique="true" fetch="join">
                <column name="MGR_ID"></column>
            </many-to-one>
        </class>
    </hibernate-mapping>
    Department.hbm.xml
    <hibernate-mapping>
        <class name="hibernate.one2one.foreign.Manager" table="MANAGER">
            <id name="mgrId" type="java.lang.Integer">
                <column name="MGR_ID" />
                <generator class="native" />
            </id>
            <property name="mgrName" type="java.lang.String">
                <column name="MGR_NAME" />
            </property>
            <one-to-one name="department"
                class="hibernate.one2one.foreign.Department"
                fetch="select"
                property-ref="manager">
            
            </one-to-one>
        </class>
    </hibernate-mapping>
    Manager.hbm.xml

      其中 Department 使用 many-to-one 的方式映射 Manager,但是需要设置一个 unique 属性,设置为 true,使其只能指向一个 Manager

      Manager 使用 one-to-one 的方式来映射 Department,注意需要设置一个 property-ref 属性,因为其默认关联的是 Department 表中的主键,需要设置其指向 Department 哪个属性,注意,这里设置的值是域对象中的值,不是数据表中的列名。

  • 相关阅读:
    poj3111 K Best 最大化平均值,二分
    cd732D Exams 二分
    cf448D Multiplication Table 二分
    hdu2199,double二分
    hdu3015,poj1990树状数组
    Codeforces Round #595 (Div. 3) D2Too Many Segments,线段树
    C#学习
    C#中单例的双重锁定模式
    C# HashSet 用法、Hashtable用法
    如何阅读他人的项目源代码程序
  • 原文地址:https://www.cnblogs.com/zyx1301691180/p/7701301.html
Copyright © 2011-2022 走看看