Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在插入包含对象集的对象列表时忽略唯一冲突_Java_Hibernate_Postgresql 9.1_Spring Data Jpa - Fatal编程技术网

Java 如何在插入包含对象集的对象列表时忽略唯一冲突

Java 如何在插入包含对象集的对象列表时忽略唯一冲突,java,hibernate,postgresql-9.1,spring-data-jpa,Java,Hibernate,Postgresql 9.1,Spring Data Jpa,我在Hibernate中使用PostgreSQL nad Spring数据JPA。我和孤儿有关系,因为我经常在关系中增加很多孩子 家长: @OneToMany(mappedBy=“parent”,cascade={CascadeType.ALL},orphanRemoving=false,fetch=FetchType.LAZY) 公共集getChildren(){ 返回儿童; } 儿童: @许多酮 @JoinColumn(name=“parent\u id”) 公共父getParent(){

我在Hibernate中使用PostgreSQL nad Spring数据JPA。我和孤儿有关系,因为我经常在关系中增加很多孩子

家长:

@OneToMany(mappedBy=“parent”,cascade={CascadeType.ALL},orphanRemoving=false,fetch=FetchType.LAZY) 公共集getChildren(){ 返回儿童; }

儿童:

@许多酮 @JoinColumn(name=“parent\u id”) 公共父getParent(){ 返回父母; }

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

Iterable保存(Iterable实体)


形成积垢沉积。我保存父项列表,其中每个父项都包含一组子项。子表具有唯一约束。如果发生约束冲突,我想忽略它和ommit(不持久化)子级,它会对viloations进行处理,但我想插入每个不会对约束冲突进行处理的子级。如何做到这一点?

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


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

通过异常处理此脏数据

  • 尝试更新数据库,如果在此处中断。 捕获UniqueViolationException并查找JDBCException。向上转换到合格的数据库异常,并找到损坏的子项

  • 从父对象中删除子对象

  • 转到1


  • 我同意你们的观点,但在这个场景中,我必须在插入之前从数据库中选择所有子项。这会导致更多的操作要做。我专门将删除设置为false以避免它。我是ORM的初学者,我注意到如果您不关心操作的数量和复杂性,那么ORM很容易使用。但是如果你想减少不必要的操作,那么问题就会出现。“如果你不关心操作的数量,那么xxx很容易使用。”,xxx可以是任何抽象:jni、ajax、sql、http、队列、时事通讯、钓鱼、战斗、迷宫清理;)这不是一种干净的方法,因为有人可能会在另一个事务中添加新实体,而您可能会得到唯一的冲突异常。@mpr您是指唯一的约束冲突异常。这就是为什么我们有酸中的I。但你是对的:延迟约束和延迟读取可以对ACID构成这样的冲突。在“readcommitted”事务隔离级别中,您描述的方法也不起作用。