Hibernate 关系映射 —— 双向(一对多)多对一

来源:互联网 发布:剑三成女捏脸数据 云盘 编辑:程序博客网 时间:2024/05/24 05:44

关于关系映射的一些基本知识点,请查看总结篇:Hibernate 关系映射

对象模型: user 多对一 group

Annotation方式:

        配置方法:

     1. 以多的一端为主,先配置多的一端;

     2. 在多(user)的一端添加注解:@ManyToOne @JoinColumn(name="groupid"), name属性用来指定生成外键名称

                     3.   在一(group)的一端添加注解@OneToMany(mappedBy="group"),其中mappedBy属性必填,表示users属性已经在group中做了映射

       具体代码:

package com.zyh.hibernate;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="_group")public class Group {private int id;private String name;private Set<User> users = new HashSet<User>();@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@OneToMany(mappedBy="group")public Set<User> getUsers() {return users;}public void setUsers(Set<User> users) {this.users = users;}}package com.zyh.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;@Entity@Table(name="_user")public class User {private int id;private String name;private Group group;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToOne@JoinColumn(name="groupid")public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}}

xml方式:

     user中配置:

          <many-to-one name="group" column="groupid"></many-to-one>, column属性表示外键的名称

     group中配置:

      <set name="users">

           <!-- key 属性不能去掉,且column的值必须和user的many-to-one中的column的值相同  -->

            <key column="groupid"></key>  
            <one-to-many class="com.zyh.hibernate.User" />

        </set>

    具体配置:

    Group.hbm.xml;

<hibernate-mapping><class name="com.zyh.hibernate.Group" table="_group">        <id name="id" column="id">        <generator class="native"></generator>        </id>         <property name="name" column="name" />        <set name="users">        <!-- key 属性不能去掉,且column的值必须和user的many-to-one中的column的值相同  -->        <key column="groupid"></key>        <one-to-many class="com.zyh.hibernate.User" />        </set>    </class></hibernate-mapping>
     User.hbm.xml:

<hibernate-mapping><class name="com.zyh.hibernate.User" table="_user">        <id name="id" column="id">        <generator class="native"></generator>        </id>         <property name="name" column="name" />        <many-to-one name="group" column="groupid"></many-to-one>    </class></hibernate-mapping>


查看其它关系映射:Hibernate 关系映射


原创粉丝点击