ERROR: A different object with the same identifier value was already associated with the session
Solution: See if an existing ID already exist, if not persist record. If same ID found, merge with existing record
@Override @Transactional(value="dwTransactionManager", propagation=Propagation.REQUIRES_NEW) public void insertLog(Error[] errorRecords, Long recordId, String salesforceId, String objectName) { for (Error errorRecord : errorRecords){ try { DWLog log = new DWLog(); log.setId(new BigDecimal(recordId)); Calendar cal = Calendar.getInstance(); log.setLastSyncD(cal.getTime()); log.setLastSyncMsg("ERROR CODE: " + errorRecord.getStatusCode() + " MESSAGE: " + errorRecord.getMessage()); log.setObjectSync(objectName); if (entityManager.find(DWLog.class,log.Id)!=null){ entityManager.merge(log); }else{ entityManager.persist(log); } } catch (Exception e) { logger.error("LogDaoImpl.insertLog(): " + e.getMessage()); } } }