首页 > Web开发 > 详细

Hibernate映射关系配置(四)

时间:2017-09-22 20:43:38      阅读:194      评论:0      收藏:0      [点我收藏+]

多对多单向:

Bean:

public class Student implements Serializable {
    
    private int id ;
    
    private String name ;
    
    private Set<Teacher> teachers ;
        ....
}
public class Teacher implements Serializable{

    private int id ;
    
    private String  name ;
    ....
}

xml:

Student.hbm.xml:
<class name = "Student">
        <!-- id是来配置主键 
             name是类中的哪个属性和主键映射
             generator:表示主键的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <!-- property是用来把类中的属性和表的字段做一一对应 -->
        <property name="name" />
        
        
        <set name="teachers" table="t_s">
            <!-- key 会在指定的表中新添加列,外键-->
            <key column="sid" /> 
            <many-to-many class="Teacher" column="tid" />
        </set>
        
    </class>
Teacher.hbm.xml:
<class name = "Teacher">
        <!-- id是来配置主键 
             name是类中的哪个属性和主键映射
             generator:表示主键的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <property name="name" />
    </class>

annotation:

@Entity
public class Student implements Serializable {
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
        /**
     * joinColumns 是指定第三张表中的哪个字段引用当前类对应的表的主键
     * inverseJoinColumns 是指定第三张表中的哪个字段引用关联的另一张表的主键
     * @return
     */
    @ManyToMany
    @JoinTable(name="ts",joinColumns={
            @JoinColumn(name="sid")
    },inverseJoinColumns={
            @JoinColumn(name="tid")
    })
    public Set<Teacher> getTeachers() {
        return teachers;
    }
}

@Entity
public class Teacher implements Serializable{
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
}

多对多双向:

Bean:

public class Student implements Serializable {
    
    private int id ;
    
    private String name ;
    
    private Set<Teacher> teachers ;
        ....
}
public class Teacher implements Serializable{

    private int id ;
    
    private String  name ;
    
    private Set<Student> stus ;
        ....
}

Xml:

Student.hbm.xml:
        <class name = "Student">
        <!-- id是来配置主键 
             name是类中的哪个属性和主键映射
             generator:表示主键的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <!-- property是用来把类中的属性和表的字段做一一对应 -->
        <property name="name" />
        
        
        <set name="teachers" table="t_s">
            <!-- key 会在指定的表中新添加列,外键-->
            <key column="sid" /> 
            <many-to-many class="Teacher" column="tid" />
        </set>
        
    </class>

Teacher.hbm.xml:
<class name = "Teacher">
        <!-- id是来配置主键 
             name是类中的哪个属性和主键映射
             generator:表示主键的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <property name="name" />
        
        <set name="stus" table="t_s" cascade="all">
            <key column="tid" />
            <many-to-many column="sid" class="Student" />
        </set>
    </class>

annotation:

@Entity
public class Student implements Serializable {
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
        /**
     * joinColumns 是指定第三张表中的哪个字段引用当前类对应的表的主键
     * inverseJoinColumns 是指定第三张表中的哪个字段引用关联的另一张表的主键
     * @return
     */
    @ManyToMany
    @JoinTable(name="ts",joinColumns={
            @JoinColumn(name="sid")
    },inverseJoinColumns={
            @JoinColumn(name="tid")
    })
    public Set<Teacher> getTeachers() {
        return teachers;
    }
}

@Entity
public class Teacher implements Serializable{
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
        @ManyToMany(mappedBy="teachers")
    public Set<Student> getStus() {
        return stus;
    }
}

 

Hibernate映射关系配置(四)

原文:http://www.cnblogs.com/hyl-home/p/7576978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!