我有一个@OneToMany
JPA关联,其Curriculum
实例有几个WorkExperience
个实例。
Curriculum
JPA实体:
@Entity
public class Curriculum {
...
@OneToMany
private Set<WorkExperience> workExperiences;
...
WorkExperience
JPA实体:
@Entity
public class WorkExperience {
...
我原本希望将课程与WorkExperiences一起保存在persist方法的一个entityManager调用中。
但是,考虑到我如何设计Web UI的操作流程,我现在想知道是否可能出现另一种情况,即:
首先将WorkExperiences保存到db,然后当用户填写主要的Curriculum实体详细信息时,将其保存到:
将现有的WorkExperience实例(已在db中)设置为Curriculum实例(尚未在db中)和
这有意义吗?我想到了几个缺点,例如如果用户选择不保留Curriculum实例会发生什么?如何清理WorkExperience表中的悬空线?
是否有替代品或更好的模式?例如,在用户验证表单之前预先保存课程实例是个好主意吗?
答案 0 :(得分:2)
我会在Curriculum
上定义一个级联,因为WorkExperience
似乎是一个依赖实体。
然后使用UI /控制器中的新/已分离实体,直到用户决定提交(最后)表单。然后保持Curriculum
并且相同的WorkExperience
实体也将在同一事务提交期间保持不变。
@OneToMany(cascade=CascadeType.ALL)
private Set<WorkExperience> workExperiences;