Hibernate - 使用复合ID连接表

时间:2013-01-04 11:28:52

标签: hibernate many-to-many composite-id

我有一个人员表({{​​1}})和一个地址表(PersonID)。我想创建一个名为AddressID的新联接表,它使用Person_Address关系映射Person->Adress,我必须将主键指定为两个主键的组合({{1} })。

如何使用Hibernate HBM语法执行此操作?

1 个答案:

答案 0 :(得分:1)

使用@ManyToMany并忘记在Hibernate中连接表。连接表将存在于您的数据库中,但不存在于您的代码中,Hibernate知道如何处理它。

示例:

人类(作为关系的所有者):

@ManyToMany(targetEntity = Address.class, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = fetchType.LAZY)
@JoinTable(name = "person_address", joinColumns = @JoinColumn(name = "PersonID"), inverseJoinColumns = @JoinColumn(name = "AddressID"))
List<Address> addresses;

地址类(如果需要):

@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "addresses", targetEntity = Person.class, fetch = FetchType.LAZY)
List<Person> persons;

编辑:

这个link将帮助您进行多对多XML映射。