gpt4 book ai didi

java - 双向映射情况下如何在 spring-data-jpa 中删除

转载 作者:行者123 更新时间:2023-12-02 01:38:55 25 4
gpt4 key购买 nike

我有 country.java 实体类,其中 valuessources 作为一对多关联。我有 sourcesvalues 实体,它也具有多对一的到 country 类的双向映射。

现在我想删除属于特定国家/地区 Id 的所有来源以及该国家/地区 Id 的所有值。

删除后,我想为这两个字段添加一组新的

如果我这样做

country.setcharValues(new ArrayList<>());
countryRepository.save(country);

它正在删除所有内容,甚至是我不想删除的属性。

国家.Java

@OneToMany(mappedBy = "Country",cascade = { CascadeType.ALL},fetch = FetchType.EAGER,orphanRemoval = true)
@Fetch(value = FetchMode.SUBSELECT)
private List<Values> charvalues = new ArrayList<>();

@OneToMany(mappedBy = "Country",cascade = {CascadeType.ALL},fetch = FetchType.EAGER,orphanRemoval = true)
@Fetch(value = FetchMode.SUBSELECT)
private List<Property> charProperty = new ArrayList<>();

@OneToMany(mappedBy = "CharCountry",cascade = { CascadeType.ALL},fetch = FetchType.EAGER,orphanRemoval = true)
@Fetch(value = FetchMode.SUBSELECT)
private List<Source> charSource = new ArrayList<>();

最佳答案

如果您想要清除与国家/地区关联的所有来源,然后想要添加新的 > 和 Sources 在同一事务中,您可以尝试如下所示,

    final Country country = countryRepository.findById(countryId).get();

country.getSources().clear();
country.getValues().clear();
countryRepository.saveAndFlush(country);

// add new Values and Sources to country

countryRepository.save(country);

由于使用了orphanRemoval = true,这应该可以工作。

关于java - 双向映射情况下如何在 spring-data-jpa 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57500049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com