我的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。
我想忽略此错误并继续插入数据或以某种方式处理错误。
如果我想在数据库中已经忽略该行并跳过它并继续插入
答案 0 :(得分:0)
为什么要分配这个aCdrList1 = aCdrList?有什么具体原因吗? 你可以保存aCdrList对象。使用下面一个
em.saveOrUpdate(aCdrList);
或
em.merge(aCdrList);