Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/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 为什么JPA存储库保存方法会自动更新子实体?_Java_Spring_Spring Boot_Hibernate_Kotlin - Fatal编程技术网

Java 为什么JPA存储库保存方法会自动更新子实体?

Java 为什么JPA存储库保存方法会自动更新子实体?,java,spring,spring-boot,hibernate,kotlin,Java,Spring,Spring Boot,Hibernate,Kotlin,所以我的spring boot项目中有一个bug,我现在不知道该怎么办。我有以下两个实体: Customer.kt: @OneToMany(mappedBy = "customer", cascade = [CascadeType.ALL]) var projectList: List<Project>? 在我的方法中,我只使用了一次save方法,如下所示: customerRepository.save(existingCustomer) existingC

所以我的spring boot项目中有一个bug,我现在不知道该怎么办。我有以下两个实体:

Customer.kt:

@OneToMany(mappedBy = "customer", cascade = [CascadeType.ALL])
var projectList: List<Project>?
在我的方法中,我只使用了一次save方法,如下所示:

customerRepository.save(existingCustomer)
existingCutomer
有一个字段
projects
。调试时,我确保
projects
为空。我的计划是,在没有项目的情况下更新客户财产。但是,我只使用了一次
save
方法,但他也更新了我的项目。我不知道为什么,它没有意义,因为
projects
字段是空的

我想在这里粘贴更多的代码,但我希望我粘贴了相关的代码。因为剩下的真的很重要,希望不重要


有人知道我在给定的代码中是否做错了什么吗?当
客户
没有项目时,为什么
项目
表也会更新?

因为您使用的是
CascadeType。所有
您都可以使用cascade=[CascadeType.PERSIST,CascadeType.MERGE]来避免删除。我有更新的问题,而不是删除。我能做什么?仍然使用
CascadeType.ALL
,即使
project
不再位于
customer
内部,更新它又有什么意义呢?
customerRepository.save(existingCustomer)