Hibernate关系映射(N--N)多对多

(1)N--N单向(多对多单向)  多对多的关系,一定要找个中间表进行管理

第一步:类 对象之间的关系映射

 

t_teacher(id,name,age)  --教师表

t_student(id,name,age)  --学生表

t_teacher_student(t_id,s_id)  --教师学时关系表

 

public class Teacher {
    private int id;
    private String name;
    private int age;
    private Set<Student> students;

}

 

public class Student {
    private int id;
    private String name;
    private int age;

}

 

第二步:xml的配置

    <class name="Teacher" table="t_teacher">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
       
        <property name="name" unique="true" not-null="true" column="name" length="32"/>       
        <property name="age" column="age" length="32"/>
       
        <set name="students" table="t_teacher_student" cascade="save-update">
            <key column="t_id"></key>
            <many-to-many class="Student" column="s_id"></many-to-many>
        </set>    
  
    </class>

 

    <class name="Student" table="t_student">
        <id name="id" column="id">
            <generator class="native">               
            </generator>
        </id>
         <property name="name" unique="true" not-null="true" column="name" length="32"/>
         <property name="age" column="age" length="32"/>     
    </class>

 

 

(1)N--N双向(多对多双向)  多对多的关系,一定要找个中间表进行管理

第一步:类 对象之间的关系映射

t_teacher(id,name,age)  --教师表

t_student(id,name,age)  --学生表

t_teacher_student(t_id,s_id)  --教师学时关系表

 

 

public class Teacher {
    private int id;
    private String name;
    private int age;
    private Set<Student> students;

}

 

public class Student {
    private int id;
    private String name;
    private int age;

    private Set<Teacher> teachers; // 增加了Teacher的集合

}

 

第二步:xml的配置(多对多的双向,两边写法一样的)

    <class name="Student" table="t_student">
        <id name="id" column="id">
            <generator class="native">               
            </generator>
        </id>
        <property name="name" unique="true" not-null="true" column="name" length="32"/>
        <property name="age" column="age" length="32"/>


        -- 增加了set配置
        <set name="teachers" table="t_teacher_student" cascade="save-update">
            <key column="s_id"></key>
            <many-to-many class="Teacher" column="t_id"></many-to-many>
        </set>

    </class>

 

    <class name="Teacher" table="t_teacher">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
        <property name="name" unique="true" not-null="true" column="name" length="32"/>
        <property name="age" column="age" length="32"/>
       
        <set name="students" table="t_teacher_student" cascade="save-update">
            <key column="t_id"></key>
            <many-to-many class="Student" column="s_id"></many-to-many>
        </set>
    </class>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值