gpt4 book ai didi

java - 在 JPA 实体本身之前保留/保存该实体的关系

转载 作者:行者123 更新时间:2023-11-30 04:26:15 25 4
gpt4 key购买 nike

我有一个 @OneToMany JPA 关联,它与一个 Curriculum 实例有多个 WorkExperience 实例。

类(class) JPA 实体:

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

WorkExperience JPA 实体:

@Entity
public class WorkExperience {
...

我最初想将类(class)及其 WorkExperiences 持久保存在实体管理器对 persist 方法的调用中。

但是,考虑到我设计 Web UI 操作流程的方式,我现在想知道另一种情况是否不可能,即:

  • 首先将 WorkExperiences 保存到数据库,然后在用户填写主要类(class)实体详细信息后,执行以下操作:

  • 将现有 WorkExperience 实例(已在数据库中)设置为 Curriculum 实例(尚未在数据库中),并且

  • 保留整个对象图:类(class)及其工作经验。

这有道理吗?我想到了几个缺点,例如如果用户选择不保留类(class)实例会发生什么?如何清除 WorkExperience 表中的悬空线?

有替代方案或更好的模式吗?例如,在用户验证表单之前预先保存类(class)实例是个好主意吗?

最佳答案

我会在类(class)上定义一个级联,因为WorkExperience似乎是一个依赖实体。

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

@OneToMany(cascade=CascadeType.ALL)
private Set<WorkExperience> workExperiences;

关于java - 在 JPA 实体本身之前保留/保存该实体的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com