您的位置:首页 > 其它

hibernate 关联关系映射

2013-11-03 17:06 316 查看
映射关系:

Many-to-one单向

Person – department

Person:

publicclassPerson
implements Serializable{
    private Stringpno;
    private Stringname;
    private Stringaddress;
    private DepartmentEntitydept;
    privateintage;

}

Person.hbm.xml :
<classname="com.etc.entity.doubleface.Person"table="t_mtoo3_person">
       <idname="pno"><generatorclass="uuid"/></id>
       <propertyname="name"/>
       <propertyname="address"/>
       <propertyname="age"/>
       <many-to-onename="dept"column="deptid"></many-to-one>
    </class>

 

DepartmentEntity:

publicclass DepartmentEntityimplements Serializable{
    privatestaticfinallongserialVersionUID
= 1L;
    private Stringdeptno;
    private Stringdeptname;
    private Stringdeptaddress;

}

DepartmentEntity.hbm.xml:

<classname="com.etc.entity.doubleface.DepartmentEntity"table="t_mtoo3_dept">
       <idname="deptno"><generatorclass="uuid"/></id>
       <propertyname="deptname"/>
       <propertyname="deptaddress"/>
    </class>

 

Many-to-one双向 One-to-many:(去掉任意一边关系配置就成单向)

多个Person对一个 department 

一个department对多个Person:

Person:

publicclassPerson
implements Serializable{
    private Stringpno;
    private Stringname;
    private Stringaddress;
    private DepartmentEntitydept;
    privateintage;

}

Person.hbm.xml:

<classname="com.etc.entity.doubleface.Person"table="t_mtoo3_person">
       <idname="pno"><generatorclass="uuid"/></id>
       <propertyname="name"/>
       <propertyname="address"/>
       <propertyname="age"/>
       <many-to-onename="dept"column="deptid"></many-to-one>
    </class>

DepartmentEntity:

publicclass DepartmentEntityimplements Serializable{
    privatestaticfinallongserialVersionUID
= 1L;
    private Stringdeptno;
    private Stringdeptname;
    private Stringdeptaddress;
    privateSet
persons;

}

DepartmentEntity.hbm.xml:

    <classname="com.etc.entity.doubleface.DepartmentEntity"table="t_mtoo3_dept">
       <idname="deptno"><generatorclass="uuid"/></id>
       <propertyname="deptname"/>
       <propertyname="deptaddress"/>
       <setname="persons">
           <keycolumn="deptid"></key>
           <one-to-manyclass="com.etc.entity.doubleface.Person"/>
       </set>
    </class>

One-to-one

一个学生对应一个学号(主键双向关联)

Student- StudentNo

Student:

publicclass Student {
    private Stringid;
    private StudentNostuno;
    private Stringname;
    privateintage;

}

Student.hbm.xml:

<classname="com.etc.entity.onetoone.Student"table="t_otoo_student">
        <idname="id">
           
<generator
class="foreign">
             
<param name="property">stuno</param>
        </generator>
       
</id>
       <propertyname="name"/>
       <propertyname="age"/>
       <one-to-onename="stuno"constrained="true"></one-to-one>
    </class>

 

StudentNo:

publicclass StudentNo {
    private Stringsno;
    private Stringmem;
    private Studentstu;

}

StudentNo.hbm.xml:

<classname="com.etc.entity.onetoone.StudentNo"table="t_otoo_stuno">
       <idname="sno"><generatorclass="uuid"/></id>
       <propertyname="mem"/>
       
<one-to-one
name="stu"/>
</class>

One-to-one

一个学生对应一个学号(外键双向关联)

Student- StudentNo

Student:

publicclass Student {
    private Stringid;
    private StudentNostuno;
    private Stringname;
    privateintage;

}

 Student.hbm.xml:

<classname="com.etc.entity.onetoonefk.Student"table="t_otoofk_student">
        <idname="id">
           
<generator
class="uuid">
        </generator>
       
</id>
       <propertyname="name"/>
       <propertyname="age"/>
       <many-to-onename="stuno"
            column="stunoid"
        unique="true"
        not-null="true"cascade="save-update"/>
    </class>

 

StudentNo:

publicclassStudentNo{
    private Stringsno;
    private Stringmem;
    private Studentstu;

}

StudentNo.hbm.xml:

<classname="com.etc.entity.onetoonefk.StudentNo"table="t_otoofk_stuno">
       <idname="sno">
           <generatorclass="uuid"/>
       </id>
       <propertyname="mem"/>
       <one-to-onename="stu" property-ref="stuno"/>
    </class>

Many-to-many 双向关联

Course- Student(一门课程可以多个学生学习,一个学生学习多门课程)

Course:publicclass Course {

    private Stringcno;
    private Stringcoursemem;
    private Stringcoursename;
    privateSet
students;}

Course.hbm.xml:

<classname="com.etc.entity.manytomany.Course"table="t_mtom1_course">
       <idname="cno"><generatorclass="uuid"/></id>
       <propertyname="coursemem"/>
       <propertyname="coursename"/>
       <setname="students"table="t_mtom_student_course">
           <keycolumn="courseid"></key>
           <many-to-manyclass="com.etc.entity.manytomany.Student"column="stuid"/>
       </set></class>
Student:

publicclass Student {
    private Stringid;
    privateSet
courses;
    private Stringname;
    privateintage;

}

Student.hbm.xml:

    <classname="com.etc.entity.manytomany.Student"table="t_mtom1_student">
        <idname="id"><generatorclass="uuid"></generator></id>
       <propertyname="name"/>
       <propertyname="age"/>
       <!-- name属性采用实体中变量名称;table属性表示生成的中间表表名;cascade属性表示级联操作   -->
       <setname="courses"table="t_mtom_student_course"cascade="save-update">
           <keycolumn="stuid"></key><!--将此表的主键拿到中间表中的列名为stuid
-->
           <many-to-manyclass="com.etc.entity.manytomany.Course"column="courseid"/>
           <!--com.etc.entity.manytomany.Course对应表的主键拿到中间表中的列名为courseid -->
       </set>
    </class>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: