当前位置: 首页 > 知识库问答 >
问题:

如何在插入包含对象集合对象列表时忽略唯一违反

秦锐
2023-03-14

我使用PostgreSQL和Hibernate Spring Data JPA。我有关系OneToMany with OlphanRemovement=false,因为我经常将许多孩子添加到关系中。

家长:

@OneTomany(mappedBy=“parent”,cascade={cascadeType.all},orphanremovation=false,fetch=fetchType.lazy)公共集getChildren(){return children;}

孩子:

@ManyToOne@JoinColumn(name=“parent_id”)公共父级getParent(){return Parent;}

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

可迭代 保存(可迭代 实体)

表单CrudRepository。我保存了父级列表,其中每个父级包含一组子级。子表具有唯一约束。如果发生了约束冲突,我想忽略那个,并且ommit(不持久)子(它会导致错误),但是我想插入每个子(它不会导致约束冲突)。怎么做?

共有2个答案

丁阎宝
2023-03-14

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

异常应该按实际情况使用:异常。

邢博涛
2023-03-14

通过异常来处理这个肮脏的问题。

>

  • 尝试更新数据库,如果可以,请中断此处。捕获UniqueViolationException并找到JDBCException。向上转换到您的合格数据库异常,并找到被破坏的子级。

    从父级中删除子级。

    转到%1。

  •  类似资料:
    • 我有“MainClass”类的对象列表,它包含“Question”类的对象列表,它包含Option类的对象列表。如何按“Id”对“MainClass”类列表进行排序,以及按“Id”对“Option”类列表进行排序? 假设,

    • 我试图在集合中插入一个对象,我重载了' 但我仍然得到以下错误: /home/joju/NetBeansProjects/cppu 1/main。cpp:51:对“domino::domino(int,int)”的未定义引用 build/Debug/GNU-Linux-x86/main。o:在函数`std::less::operator()(domino const)中 /usr/include/c

    • 问题内容: 我只想将对象推入mongodb中的对象数组 并将对象推入需要执行的上述文档中 那么我如何使用 mgo驱动程序* 实现相同的功能 * 问题答案: 请尝试以下操作:

    • 我正在处理5个自定义对象,需要能够将它们保存(序列化)到文件中,并在以后重新加载它们。所有对象都实现可序列化,我可以单独保存和重新加载它们。 这个程序基本上是在模仿关系数据库,但是我不能使用实际的数据库。 我的潜在问题是,一个或两个对象包含其他对象。从我的测试来看,子对象似乎全部保存在主对象中。 ... 当一个foo1对象被反序列化时,它会正确地重新创建自己,包括任何foo2对象。 然而,我认为f

    • 问题内容: 我想知道是否有可能在另一个Embeddable中包含Embeddable的ElementCollection? 这是我的供应商实体的示例,该实体具有可嵌入类型的地址列表: 这是我的可嵌入地址,其中包含可嵌入电话的列表 这是嵌入式电话的定义 我目前正在使用JPA 2 + Hibernate 3.6.x对此进行测试 在地址中使用嵌入式电话在我的测试中导致错误。这是最底层的部分调试消息: 删

    • 我想在Java中反序列化包含空值的json字符串。我想将对象反序列化为对象。json字符串类似于: 当我反序列化使用 由于对象中的that,我得到一个空指针异常。我如何指示Gson忽略空值的反序列化?