我有以下 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/