Java 为什么JPA存储库保存方法会自动更新子实体?
所以我的spring boot项目中有一个bug,我现在不知道该怎么办。我有以下两个实体: Customer.kt: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
@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)