Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当@OneToMany注释时,hibernate是否总是需要添加/清除方法?_Java_Spring_Spring Boot_Hibernate_Spring Data Jpa - Fatal编程技术网

Java 当@OneToMany注释时,hibernate是否总是需要添加/清除方法?

Java 当@OneToMany注释时,hibernate是否总是需要添加/清除方法?,java,spring,spring-boot,hibernate,spring-data-jpa,Java,Spring,Spring Boot,Hibernate,Spring Data Jpa,我有 比如说 主有两颗行星,我想把主的这两颗行星分开 我选择lord加入行星表,然后通过这种方式清除行星:fetchedLordById.clearPlanets();&repo.save(fetchedLordById) 这是个好办法吗?是的 从: 每当形成双向关联时,应用程序 开发人员必须确保双方始终保持同步 所以你所做的是正确的 您还可以启用: 启用此属性后,只需更新关联的一侧。请记住,如果启用它,可能还需要更新代码以使用它,因为它改变了Hibernate ORM处理关联的方式 @OneT

我有

比如说 主有两颗行星,我想把主的这两颗行星分开

我选择lord加入行星表,然后通过这种方式清除行星:fetchedLordById.clearPlanets();&repo.save(fetchedLordById)

这是个好办法吗?

是的

从:

每当形成双向关联时,应用程序 开发人员必须确保双方始终保持同步

所以你所做的是正确的

您还可以启用:

启用此属性后,只需更新关联的一侧。请记住,如果启用它,可能还需要更新代码以使用它,因为它改变了Hibernate ORM处理关联的方式

@OneToMany(mappedBy = "lord", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@Getter
private Set<Planet> planets;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "lord_id")
private Lord lord;
// Lord code above
public void clearPlanets() {
    this.planets.forEach(item -> item.setLord(null));
    this.planets.clear();
}
hibernate.enhancer.enableAssociationManagement = true