我将 PostgreSQL 和 Spring 数据 JPA 与 Hibernate 一起使用。我有关系 OneToMany 与 orphanRemoval = false 因为我经常添加很多 child 关系。
家长:
@OneToMany(mappedBy = "parent", cascade = { CascadeType.ALL }, orphanRemoval = false, fetch = FetchType.LAZY) public Set getChildren() { return children; }
child :
@ManyToOne @JoinColumn(name = "parent_id") public Parent getParent() { return parent; }
要持久化或合并对象,我使用方法
Iterable< T > save(Iterable< extends T> entities)
形成 CrudRepository。我保存了 parent 名单,其中每个 parent 都包含一组 child 。子表具有唯一约束。如果发生违反约束的情况,我想忽略它并忽略(不坚持)发生冲突的 child ,但我想插入每个不违反约束的 child 。如何做到这一点?
最佳答案
通过异常处理这个问题。
尝试更新数据库,如果没问题的话就从这里中断。 捕获 UniqueViolationException 并找到 JDBCException。向上转换到您合格的数据库异常并找到损坏的子项。
从父项中移除子项。
转到1。
关于java - 如何在插入包含对象集的对象列表期间忽略唯一违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468698/