java - 如何在插入包含对象集的对象列表期间忽略唯一违规

标签 java hibernate postgresql-9.1 spring-data-jpa

我将 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 。如何做到这一点?

最佳答案

通过异常处理这个问题。

  1. 尝试更新数据库,如果没问题的话就从这里中断。 捕获 UniqueViolationException 并找到 JDBCException。向上转换到您合格的数据库异常并找到损坏的子项。

  2. 从父项中移除子项。

  3. 转到1。

关于java - 如何在插入包含对象集的对象列表期间忽略唯一违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468698/

相关文章:

postgresql - 使用参数而不是硬编码字符串时,Postgres 查询非常慢

Java - 我可以将变量修改从一个类转换到另一个类吗?

java - 从 PNG 文件中获取颜色信息

java - 查询C3P0启动时获取的连接数

java - 并行插入/更新期间发生死锁

sql - IN 子查询的 WHERE 条件影响主查询——这是一个特性还是一个错误?

java - Apache POI Word 在表格后添加文本的最佳方法

java - SSL CA证书安装

java - 是否可以使用 Hibernate 标准获取 Order 的连接表的 SQL 别名?

python - django:从 IntegrityError 中恢复的正确方法