将同一实体作为集合映射到自身

时间:2011-09-27 09:22:17

标签: hibernate collections

好吧,说我有一个“人”实体,需要将“人”作为财产(比方说,朋友) 由于这是一个多对多的连接,如果我使用SQL创建这个模式(我不是,我使用hbm.ddl.auto来为我做)我可能会创建另一个包含2的表带有2个ID的列(每个朋友1个) 但是,我不知道如何在休眠中注释这个,我这样做了:

class PersonEntity {

.
.

@ElementCollection
private List<PersonEntity> friends ;

.
.
}

问题是,我不确定这是最好的方式..例如,我在“思考”每当我将一个朋友添加到列表并持续存在时,它将作为表格中的下一行插入,并且因为我似乎无法索引这个字段,我想象数据检索效率低下。 你能提出更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您正在寻找@ManyToMany@JoinTable

The api doc of ElementCollection说:

  

定义基本类型或可嵌入类的实例集合

您有一组实体实例。有关如何使用这些注释,请参阅http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#eentity-mapping-association-collection-manytomany