hibernate 多对多关系详解(包括中间表,一对多字表)

Event事件表

Person 人员表

Person_Event 人员事件表

PersonEmailAddr邮件地址表

 关系图:

事件对人员是多对多的关系,中间表Person_Event只有两个字段(PERSON_ID,EVENT_ID),邮件地址表只对应人员ID,一个人可以多个邮箱

 

*************** CLASS PERSON ***************

publicclass Person {

 

    private Long id; //ID主键

    privateintage; //属性

    private String firstname;//属性

    private String lastname; //属性

    private Set emailAddresses = new HashSet();//与表PersonEmailAddr 对应字段的属性,邮件地址可以多个不同,所以放入Set中而不放入List

    private Set events = new HashSet();//与表Person_Event 对应字段的属性,道理跟上面一样

 

    // Getter and Setter methods

 

    // Defensive, convenience methods .PERSON端维护关系,inverse=”false”

    publicvoid addToEvent(Event event) {

        this.getEvents().add(event);

        event.getParticipants().add(this);

    }

 

    publicvoid removeFromEvent(Event event) {

        this.getEvents().remove(event);

        event.getParticipants().remove(this);

    }

 

}

 

*************** CLASS EVENT ***************

publicclass Event {

   

    private Long id    //主键ID

    private Date date;   //属性

    private Set<Person> participants = new HashSet<Person>(); //与表Person_Event 对应字段的属性,道理跟上面一样

 

    private String title; //属性

 

    // Getter and Setter methods

 

}

 

******************* PERSON XML ******************

<hibernate-mapping>

 

    <class name="events.Person" table="PERSON"> <!--  class.name指向类class.table指向表-->

        <id name="id" column="PERSON_ID"> <!--  id.id指向属性 id.column指向字段-->

            <ge

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值