凭直觉,我通常将@ElementCollection用于合成方案。但这甚至感觉非常像CascadeType = DELETE
它们相似,但略有不同。Java Persistence
Wikibook
的ElementCollection页面对其进行了很好的总结:
嵌入式收藏
的
ElementCollection映射可以被用来定义的集合Embeddable的对象。这不是Embeddable对象的典型用法,因为对象没有 嵌入 到源对象的表中,而是存储在单独的收集表中。类似于aOneToMany,不同之处在于目标对象是Embeddable而不是Entity。这使简单对象的集合易于定义,而无需简单对象定义
逆映射Id或ManyToOne逆映射。ElementCollection还可以覆盖映射或表以获取其集合,因此您可以让多个实体引用同一Embeddable类,但是每个实体
都将其依赖对象存储在单独的表中。使用a
ElementCollection代替a 的局限性OneToMany在于,不能独立于其父对象来查询,持久化和合并目标对象。它们是严格私有的(从属)对象,与Embedded映射相同
。cascade在上ElementCollection,它们是不可选项,目标对象始终与其父对象保持,合并或删除。ElementCollection仍然可以使用访存类型,并且默认LAZY与其他集合映射相同。
也可以看看
- 可嵌入对象(聚合,复合或组件对象)



