1

我有一个@OneToManyJPA 关联,该关联Curriculum具有多个WorkExperience.

CurriculumJPA 实体:

@Entity
public class Curriculum {
    ...
    @OneToMany
    private Set<WorkExperience> workExperiences;
    ...

WorkExperienceJPA 实体:

@Entity
public class WorkExperience {
...

我最初想将课程及其 WorkExperiences 持久化到一个 entityManager 调用的 persist 方法中。

但是,鉴于我如何设计 Web UI 的操作流程,我现在想知道是否可能无法实现另一种情况,即:

  • 首先将 WorkExperiences 持久化到 db,然后在用户填写了主要课程实体详细信息后,将其持久化到:

  • 将现有的 WorkExperience 实例(已经在 db 中)设置为 Curriculum 实例(不在 db 中)和

  • 坚持整个对象图:课程及其工作经验。

那有意义吗?我想到了几个缺点,例如,如果用户选择不保留 Curriculum 实例会发生什么?如何清理 WorkExperience 表中的悬空线?

有替代品或更好的模式吗?例如,在用户验证表单之前预先保存课程实例是个好主意吗?

4

1 回答 1

2

我会在 , 上定义一个级联Curriculum,因为WorkExperience它似乎是一个依赖实体。

然后在 UI/控制器中使用新的/分离的实体,直到用户决定提交(最后一个)表单。然后在同一事务提交期间持久化Curriculum和相关实体也将被持久化。WorkExperience

@OneToMany(cascade=CascadeType.ALL)
private Set<WorkExperience> workExperiences;
于 2013-04-03T13:05:13.440 回答