根据这篇文章Difference between @OneToMany and @ElementCollection?,我应该选择@ElementCollection
作为可嵌入类型,而@OneToMany
用于实体。但是使用@OneToMany
,我可以额外设置选项orphanRemoval=true
。如何使用@ElementCollection
执行此操作?这是在暗示什么吗?
根据这篇文章Difference between @OneToMany and @ElementCollection?,我应该选择@ElementCollection
作为可嵌入类型,而@OneToMany
用于实体。但是使用@OneToMany
,我可以额外设置选项orphanRemoval=true
。如何使用@ElementCollection
执行此操作?这是在暗示什么吗?
1条答案
按热度按时间pepwfjgg1#
这是隐含的。删除所属实体也会删除
@ElementCollection
上的所有数据。如果Session
尚未关闭,则将Collection
设置为空或更改Collection
中的元素将导致更新。这里的官方文件写道:
2.8.1。集合作为值类型
值和可嵌入类型集合的行为类似于简单值类型,因为它们在被持久对象引用时自动持久化,在未引用时自动删除。如果将集合从一个持久对象传递到另一个持久对象,则其元素可能会从一个表移动到另一个表。
..。
对于值类型的集合,JPA 2.0定义了@ElementCollection注解。值类型集合的生命周期完全由其所属实体控制。
我运行了这三个测试来测试它:
这是
Student
类: