Java 如何使用Hibernate处理重复记录
我的web服务获取要添加到DB上的数据列表 要写入的表包含Java 如何使用Hibernate处理重复记录,java,hibernate,duplicates,try-catch,Java,Hibernate,Duplicates,Try Catch,我的web服务获取要添加到DB上的数据列表 要写入的表包含3个字段:(id、userId、contactId)。DB上的(用户ID、联系人ID)是一个唯一键 如果web服务检索到一对重复的值(userId,contactId),我需要在java端处理异常,如果引发重复的异常,还需要继续添加剩余的记录 我正在使用的代码 Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction
3个字段
:(id、userId、contactId)
。DB上的(用户ID、联系人ID)
是一个唯一键
如果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
}
会话会话=HibernateUtil.getSessionFactory().openSession();
事务=空;
试一试{
事务=session.beginTransaction();
对于(int i=0;i假设Contact在两个相关字段上实现Equals和Gethashcode
Set<Contact> contacts = ...;
for (int i=0; i<contactsToAdd.size(); ++i)
{
contacts.Add(new Contact(userId, contactsToAdd.get(i)));
}
for (Contact contact in contacts)
{
Session.Save(contact);
}
设置联系人=。。。;
对于(inti=0;iit最好将相关代码与问题内联发布,而不是发布一些外部站点,在这些站点中,相关代码最终会消失,使问题对未来的访问者毫无用处!