如何在包含对象集的对象的插入列表中忽略唯一违规

时间:2012-09-18 00:01:28

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

我使用PostgreSQL和Spring数据JPA和Hibernate。我和OrphanRemoval = false有关系OneToMany,因为我经常在关系中添加很多子项。

父:

  

@OneToMany(mappedBy =“parent”,cascade = {CascadeType.ALL},orphanRemoval = false,fetch = FetchType.LAZY)       public Set getChildren(){           回归孩子;       }

子:

  

@ManyToOne       @JoinColumn(name =“parent_id”)       public Parent getParent(){           回归父母;       }

要保持或合并对象我使用方法

  

可迭代< T>保存(Iterable< extends T> entities)

表格CrudRepository。我保存父母列表,其中每个父母都包含一组孩子。子表具有唯一约束。如果发生约束违规,我想忽略那个并且忽略(不要坚持)孩子哪些案件viloations但我想插入每个不违反案件约束的孩子。怎么做?

2 个答案:

答案 0 :(得分:1)

通过例外处理这个脏。

  1. 尝试更新数据库,如果在此处稍作休息。 捕获UniqueViolationException并找到JDBCException。升级到您的合格数据库异常并找到破碎的孩子。

  2. 从家长中删除子女。

  3. 转到1.

答案 1 :(得分:0)

干净的方法是过滤将产生唯一违规异常的实体。 过滤完该实体后,您可以保存好实体。

应该使用例外情况:例外情况。