0
我在DAO類中的一些方法:如何忽略hibernate錯誤並繼續插入數據?
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中我有uniqe索引 - 它不允許插入重複的行。它在數據庫端正常工作,但我在java中有一些錯誤。
a different object with the same identifier value was already associated with the session:
我得到這個錯誤的2個循環。我打印這個對象並在DB中找到了dublicate。
我想忽略此錯誤並繼續插入數據或以某種方式處理錯誤。
如果該行已經在我想忽略並跳過它,繼續插入
此錯誤是不言自明:休眠被告知要堅持一個對象,其ID值它已經看到在同一會話中的另一個對象。你可以修改你的業務邏輯,這樣不會發生? –
當你說「但是在DB中我有uniqe索引 - 它不允許插入重複的行。它在數據庫端正常工作,但我在java中有一些錯誤。」你什麼意思?如果數據庫有一個唯一的約束,那麼它不會允許你違反它,從Java或其他。 –
我創建了一個不允許我插入重複行的索引。我只想跳過它們並繼續插入其餘行 – user5620472