gpt4 book ai didi

java - Spring JPA : OneToMany List update results in duplicate entries

转载 作者:行者123 更新时间:2023-12-02 10:35:53 25 4
gpt4 key购买 nike

我有以下 JPA 表。我使用了单向 OneToMany 关系。

@Entity
@Table(name = "xxx")
public class Parent {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "Child_ID")
private Set<Child1> child;

//getter setters

}

@Entity
@Table(name = "xxx")
public class Child {
//other colmns

//getter setters

}

当我第一次将条目添加到上面的父集(比如 20)和 save() 时,它成功保存到数据库。然后在同一组中我又添加了 10 个并调用了 save 方法。它节省了 10 个新的数据库。如果我再次调用 save,它会再次向数据库中添加相同的 10 个条目,从而创建重复的条目。

Parentrepository.save(parentObject);

最佳答案

只需在子实体中生成有效的主键,即

@Id
@Column(name = "child_name")
private String name;

并重写@Equals和@HashCode方法:

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Child )) return false;
return name != null && name.equals(((Child) o).name);
}
@Override
public int hashCode() {
return Objects.hashCode(this);
}

关于java - Spring JPA : OneToMany List update results in duplicate entries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294485/

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