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指向字段-->
<generator class="native"/> <!-- 主键生成方法-->
</id>
<

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





