gpt4 book ai didi

java - Spring/Hibernate - 忽略重复条目并继续插入

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:16 26 4
gpt4 key购买 nike

我正在 Spring Boot 环境中开发一个应用程序,我正在使用 Hibernate 来保存数据。在这种情况下:

  • 事务由 Spring 自动管理。
  • 我的 DAO 模块标有 @Transactional@Repository 注释。
  • 我使用在带有 @PersistenceContext 注释的 DAO 模块中调用的 EntityManager
  • 我的数据库是 MySQL

我在 DAO 模块中有一个方法可以在表中插入多条记录:

@Override
public void insertMultiplePippo(List<Pippo> pl) throws PippoException{
try {
for (Pippo p : pl) {
try {
entityManager.persist(p);
} catch (MySQLIntegrityConstraintViolationException e) {
/*please enter HERE :) -->*/ logger.debug("Duplicate entry when retrieving history: keyname->" + p.getKeyName() + ", date->"
+ p.getInsertionDate() + ", value->" + p.getContentValue());
}
}
} catch (Exception e) {
logger.error("Error during insert multiple data ",e);
throw new PippoException(PippoException.CodeError.dbError, e.getMessage());
}
}

我想要多个插入,由于有重复的条目,程序会继续剩余的插入。现在,不幸的是,当有重复条目时,我在运行时遇到 MySQLIntegrityConstraintViolationException,并且 Hibernate 停止在“for” block 内执行并回滚。

我不知道我如何处理这种情况。请问有什么建议吗?

非常感谢。

最佳答案

如果表中的记录数不是那么大,您可能希望将所有现有记录提取为 Set<> existingPippos并插入 new HashSet<Pippo>(pl).removeAll(existingPippos) 的结果,而不是捕捉重复。

关于java - Spring/Hibernate - 忽略重复条目并继续插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com