我有一个可嵌入地址的Person实体,并且它们之间存在一对多关系(一个人可以有多个地址)。目前的映射是这样的:休眠嵌入式列表映射与标识符
@Embeddable
public class Address {
// ... attributes
}
@Entity
public class Person {
@ElementCollection(fetch = FetchType.EAGER)
@JoinTable(name = "Person_addresses", joinColumns = @JoinColumn(name = "personid")
)
/*
Attribute ovverrides with annotations
*/
private java.util.Set<Address> addresses = new java.util.HashSet<Address>();
}
使用这个注解意味着,在数据库中我有一个包含了所有的地址属性和PERSONID一个Person_addresses表。但是这也意味着如果我有一个拥有地址列表的人并且我更新了地址列表,那么Hibernate会删除所有相关记录并再次插入它们(修改过的记录)。
据我所知,有一种方法可以在每个记录的表中有一个主键 - 在这种情况下,hibernate可以决定需要更新列表中的哪个项目。所以我的问题是,如何在连接表中映射带有标识符的可嵌入列表? (我希望这是可以理解的,我想:))。