spring-boot - 如何在 JPA 中使用 @onetomany 关系更新实体
问题描述
我使用树结构和使用@ManyToOne 和@OneToMany 注释的父子关系创建了一个实体。但是,只有我对实体父级所做的更改才会在数据库中处理。
我的实体类如下所示:
@Entity
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class OKR {
@Id
@Column(name = "ID")
@GeneratedValue
private UUID id;
@NotBlank
private String name;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "parentid", referencedColumnName = "id")
private OKR parent;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<OKR> children;
private boolean isRoot;
public OKR(String name, OKR parent, List<OKR> children){
this.name = name;
this.children = children;
if (this.children==null){
this.children = new ArrayList<>();
}
this.parent = parent;
if (parent == null||parent.equals(new UUID(0,0))){
isRoot = true;
}else{
isRoot = false;
}
}
protected OKR(){
isRoot = true;
children = new ArrayList<>();
}
当我通过更改其父级来更新 OKR 时,父级 OKR 也会更新。但是,当我仅通过添加一个子项来更新 OKR 时,子项 OKR 不会得到更新。我对 JPA 还很陌生,而且我还注意到我的数据库中没有儿童表。所以我的问题是只更新实体的子级时更新所有关系的最简单方法是什么?
解决方案
推荐阅读
- css - 文本之间的空格
- r - 在 R 中的 plot_ly (plotly) 中获取 ylim
- python - 具有特定 dtypes 的 Pandas dataframe.to_numpy()
- python - 带有列表条目熊猫数据框的数据透视表
- python - 如何在 Django ORM 中获取常量列?
- javascript - 如何访问超出其承诺的信息
- javascript - 如何获取上一个日期期间
- android - Android sourceSets 有没有办法使用嵌套风味结构?
- leaflet - 搜索特定名称 onEachFeature
- python - for 循环中的 if 语句打印两次