🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 1.3.5\. 双向关联 接下来我们将映射双向关联(bi-directional association)- 在Java里让person和event可以从关联的任何一端访问另一端。当然,数据库schema没有改变,我们仍然需要多对多的阶数。一个关系型数据库要比网络编程语言 更加灵活,所以它并不需要任何像导航方向(navigation direction)的东西 - 数据可以用任何可能的方式进行查看和获取。 首先,把一个参与者(person)的集合加入`Event`类中: ``` private Set participants = new HashSet(); public Set getParticipants() { return participants; } public void setParticipants(Set participants) { this.participants = participants; } ``` 在`Event.hbm.xml`里面也映射这个关联。 ``` <set name="participants" table="PERSON_EVENT" inverse="true"> <key column="EVENT_ID"/> <many-to-many column="PERSON_ID" class="events.Person"/> </set> ``` 如你所见,两个映射文件里都有普通的`set`映射。注意在两个映射文件中,互换了`key`和`many-to-many`的字段名。这里最重要的是`Event`映射文件里增加了`set`元素的`inverse="true"`属性。 这意味着在需要的时候,Hibernate能在关联的另一端 - `Person`类得到两个实体间关联的信息。这将会极大地帮助你理解双向关联是如何在两个实体间被创建的。