6

我将 PostgreSQL 和 Spring 数据 JPA 与 Hibernate 一起使用。我与 orphanRemoval = false 有关系 OneToMany 因为我经常将许多孩子添加到关系中。

家长:

@OneToMany(mappedBy = "parent", cascade = { CascadeType.ALL }, orphanRemoval = false, fetch = FetchType.LAZY) public Set getChildren() { return children; }

孩子:

@ManyToOne @JoinColumn(name = "parent_id") public Parent getParent() { return parent; }

要持久化或合并对象,我使用方法

可迭代<T>保存(可迭代<扩展T>实体)

形成 CrudRepository。我保存了父母列表,其中每个父母都包含一组孩子。子表具有唯一约束。如果发生约束冲突,我想忽略它并忽略(不持久)违反约束的孩子,但我想插入每个不违反约束的孩子。怎么做?

4

2 回答 2

2

通过异常处理这个脏东西。

  1. 尝试更新数据库,如果可以在这里休息。捕获 UniqueViolationException 并找到 JDBCException。Upcast 到您的合格数据库异常并找到损坏的孩子。

  2. 从父级中删除子级。

  3. 转到 1。

于 2012-09-18T08:27:39.300 回答
0

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

应该使用异常,因为它们实际上是:异常。

于 2012-09-18T05:36:34.627 回答