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

本文详细介绍了使用Hibernate配置和操作多对多关系的示例,包括Person和Event之间的多对多关系,以及通过中间表Person_Event进行关联。同时,展示了如何在Person类中维护事件关系,并在Event类中设置inverse属性为true,表示关系由Person端维护。还提供了相关的XML映射文件和测试代码,展示了如何添加、删除人员到事件以及添加邮件地址到人员。
摘要由CSDN通过智能技术生成

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值