Java 如果唯一键匹配,则跳过持久化实体

Java 如果唯一键匹配,则跳过持久化实体,java,mysql,jpa,Java,Mysql,Jpa,假设我有一个名为“A”的实体,它有两列,分别命名为name和systemId。 这些列约束唯一键。例如,它不允许systemId为“1”且名称为“test”的重复实体 我的问题是:我想插入实体的集合。我想跳过重复的实体,只需插入新的实体。如果唯一约束失败,EntityManager是否能够跳过这些实体? 如何才能成功执行此操作?JPA不允许错误处理,它要求在发生任何错误时将事务标记为回滚 您可以将每个事务插入一个单独的事务中,或者将整个事务置于重试中,并拒绝每次传递失败的对象。您也可以先在“唯一

假设我有一个名为“A”的实体,它有两列,分别命名为name和systemId。 这些列约束唯一键。例如,它不允许systemId为“1”且名称为“test”的重复实体

我的问题是:我想插入实体的集合。我想跳过重复的实体,只需插入新的实体。如果唯一约束失败,EntityManager是否能够跳过这些实体?
如何才能成功执行此操作?

JPA不允许错误处理,它要求在发生任何错误时将事务标记为回滚


您可以将每个事务插入一个单独的事务中,或者将整个事务置于重试中,并拒绝每次传递失败的对象。您也可以先在“唯一”字段中进行选择,如果对象已经存在,则跳过该对象。

如果您还没有尝试过,那么就尝试一下&如果您遇到任何问题,发布一个包含相关详细信息/例外情况/代码等的问题,肯定会有人提供帮助。EntityManager可能会抛出异常,但不会持久化&在您的情况下可以忽略它。我尝试过,我知道它会抛出异常。但我想知道它是否可以跳过或合并而不抛出异常。如前所述,请使用相关代码更新您的帖子。通过适当的异常处理,这是可以做到的。