由于使用a @OneToMany
和@ElementCollection
批注之间都存在一对多关系,因此两者之间有什么区别?
由于使用a @OneToMany
和@ElementCollection
批注之间都存在一对多关系,因此两者之间有什么区别?
Answers:
@ElementCollection
当您要使用简单或嵌入式类型实现一对多关系时,可以简化代码。例如,在JPA 1.0中,当您希望与String
s 列表具有一对多关系时,您必须创建一个StringWrapper
仅包含主键和相关String
问题的简单实体POJO():
@OneToMany
private Collection<StringWrapper> strings;
//...
public class StringWrapper {
@Id
private int id;
private String string;
}
使用JPA 2.0,您可以简单地编写:
@ElementCollection
private Collection<String> strings;
比较简单,不是吗?请注意,您仍然可以使用@CollectionTable
批注控制表名和列名。
ElementCollection可以覆盖映射或它们的集合的表,因此您可以让多个实体引用同一个Embeddable类,但每个实体都将其依赖对象存储在单独的表中。