【问题标题】:JPA- How to avoid updating child entity to default values using mergeJPA-如何避免使用合并将子实体更新为默认值
【发布时间】:2018-07-05 11:19:50
【问题描述】:

我正在尝试保存一个已存在一个子实体的实体。 我正在使用合并来保存实体。保存非持久化实体,但使用覆盖 DB 中的值的默认值更新现有实体。

教室-主课:

 @OneToMany(
     orphanRemoval = true,
     fetch = FetchType.EAGER
 )
 @JoinTable(...)
 @Cascade(CascadeType.ALL)
 private List<Students> students;

在学生课上:

@OneToOne(
   orphanRemoval = true,
   fetch = FetchType.EAGER
)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Student student;

在 Student 类中,有一个字段具有默认值。实体中的现有值正在更新为默认值。

我正在尝试通过合并来保存父实体(教室)。

在这种情况下,merge 是正确的运算符吗?或者有什么建议可以解决这个问题?

【问题讨论】:

  • CascadeType.ALL 暗示CascadeType.MERGE,意味着子实体与父实体合并。如果您不想要这种行为,请停止使用CascadeType.ALL

标签: java jpa


【解决方案1】:

只需删除 @Cascade(CascadeType.ALL) 注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 2017-04-16
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    相关资源
    最近更新 更多