如何忽略hibernate错误并继续插入数据?

时间:2015-12-01 05:00:42

标签: java hibernate

我的DAO课程中有一些方法:

public void insertAVAYAcmCDRs(List<AvayaCmCdr> cdrList) {
        AvayaCmCdr aCdrList1 = null;
        try {
            em.getTransaction().begin();
            for (AvayaCmCdr aCdrList : cdrList) {
                aCdrList1 = aCdrList;
                em.persist(aCdrList);
            }
            em.getTransaction().commit();
            em.clear();
        } catch (Exception e) {
            logger.log(Level.INFO, "Exception in  task time={0}. Exception message = {1}.", new Object[]{aCdrList1.getDate(), e.getMessage()});
        }
    }

我尝试将所有数组实体保存到DB。但在DB中我有uniqe索引 - 它不允许插入重复的行。它在数据库方面正常工作,但我在java中有一些错误。

a different object with the same identifier value was already associated with the session: 

我在循环的2个步骤中得到此错误。我打印这个对象,在DB中找到了dublicate。

我想忽略此错误并继续插入数据或以某种方式处理错误。

如果我想在数据库中已经忽略该行并跳过它并继续插入

1 个答案:

答案 0 :(得分:0)

为什么要分配这个aCdrList1 = aCdrList?有什么具体原因吗? 你可以保存aCdrList对象。使用下面一个

em.saveOrUpdate(aCdrList);

em.merge(aCdrList);