《Hibernate学习笔记九》:多对一和一对多的关联关系

《Hibernate学习笔记九》:多对一和一对多的关联关系

前面介绍了一对一的关联关系在Hibernate应该如何来实现,这篇博文就来介绍下多对一和一对多的关联关系。

多对一和一对多的关联关系在我们的生活中也比较常见,例如,在我们学生时代,一个班级可以有多个学生,而一个学生只能属于一个班级,这就是一个多对一(一对多)的例子;

还有在我们的工作中,一个工作小组可以有多个用户,而一个用户只能属于一个小组,这也是一个多对一(一对多)的关系的例子。

1、多对一的单向关联关系

下面就以一个工作小组可以有多个用户,而一个用户只能属于一个小组,这个例子来进行设计介绍如何建立一个多对一的关联关系。

在类的层面上:在多的一方加另一个的引用

在数据库层面上:在”多对一”中”多”的一方设置外键即可

1.1、多对一单向的关联关系的Annotation实现

Group类

@Entity
    @Table(name="t_group")  //指定表名
    public class Group {
   
    private int idGroup;
    private String nameGroup;
    @Id
    @GeneratedValue
    public int getIdGroup() {
        return idGroup;
    }
    public void setIdGroup(int idGroup) {
        this.idGroup = idGroup;
    }
    public String getNameGroup() {
        return nameGroup;
    }
    public void setNameGroup(String nameGroup) {
        this.nameGroup = nameGroup;
    }

    }

User类

@Entity
    @Table(name="t_user")  //指定表名
    public class User {
    private int idUser;
    private String nameUser;
    private Group group;//指定外键
    @ManyToOne  //多对一  即一个组有多个用户,而一个用户只能属于一个组
    @JoinColumn(name="group_id")
    public Group getGroup() {
        return group;
    }
    public void setGroup(Group group) {
        this.group = group;
    }
    @Id
    @GeneratedValue
    public int getIdUser() {
        return idUser;
    }
    public void setIdUser(int idUser) {
        this.idUser = idUser;
    }
    public String getNameUser() {
        return nameUser;
    }
    public void setNameUser(String nameUser) {
        this.nameUser = nameUser;
    }
    }

由于User实体和Group实体,User是处于“多对一”中“多”的一方,因此,我们就在User类中设置一个Group的外键即可建立多对一的关联关系。

测试结果如下:

1.2、多对一单向的关联关系的XXX.hbm.xml实现

Group类和User类

Group和User类中,有相应的属性和get、set方法即可。
且User类中有一个Group的引用。

Group.hbm.xml

<?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.hibernate.mode
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值