6

我在休眠中使用 jpa 我想在数据库中插入 100 条记录,假设我在第 50 条记录插入中得到异常 JDBC 批量更新我需要处理异常并且我需要将剩余的记录保存到数据库。

代码:

 private List<TempCustomers> tempCustomer =new ArrayList<TempCustomers>();

    public String migrateCustomers() {

      TempCustomers temp = null;
        for(DoTempCustomers tempCustomers:doTempCustomers){

              try {
                temp=new TempCustomers();
                BeanUtils.copyProperties(temp, tempCustomers);
                        tempCustomer.add(temp);
                    entityManager.persist(temp);


              }catch (Exception e) {
                  tempCustomer.add(temp);
                  entityManager.persist(temp);
                  log.info("Exception ..."+e);
                  return "null";
              }
        }


        return "null";
    }
4

2 回答 2

0

在第二种情况下,请删除该行...

entityManager.persist(temp);

如您所知,这会引发异常。将其保留在列表中以供您进一步分析。最好放入任何队列(ActiveMQ)由您决定。

最好的解决方案是:

在持久化之前验证所有数据......以尽量减少异常。运行时的事情需要你再次重新处理,这应该是手动的。

于 2012-10-30T14:46:25.343 回答
0

纳根德拉。

RAS 先生所说的是正确的。

例如,您要持久化 100 个实体,并且在第 50 个实体中发生异常持久化。您有异常处理程序,它将为您处理这种情况。它会跳过当前一个并处理下一个。

需要注意的事项如下:

1-您的异常处理应该在循环中,希望您已经拥有它。

2- 对于例外情况,您可以将实体保存在不同的列表中,以便进一步分析错误详细信息。在异常捕获块中执行此操作。

3-我不确定您是否使用事务管理器,事务需要小心。

--

于 2012-10-30T14:06:49.167 回答