我的 Web 服务获取要添加到数据库的数据列表。
要写入的表包含3 fields
:(id,userId,contactId)
。在 DB(userId,contactId)
上是一个unique key
.
如果 Web 服务检索到重复的几个值(userId,contactId)
,我需要在 java 端处理异常,如果引发重复异常,还要继续添加剩余的记录。
这是我正在使用的代码。
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
for (int i=0; i<contactsToAdd.size(); ++i)
{
Contact contact = new Contact(userId, contactsToAdd.get(i));
try
{
session.saveOrUpdate(contact); // line 11
session.flush();
}
catch (HibernateException e)
{
transaction.rollback(); // line 16
// e.printStackTrace();
}
finally
{
session.clear(); // line 21
}
}
transaction.commit();
return true;
}
catch (HibernateException e) {
transaction.rollback(); // line 29
e.printStackTrace();
}
finally {
session.close(); // line 33
}
- 当
i
= 0 时,执行第 11、12、16、21 行。 - 当
i
= 1 时,执行第 11、12、16、21、29、30、33 行。
你能帮我理解为什么吗?