2015-10-06 50 views
0

我有一些奇怪的事情与我的休眠。当我使用下面的方法时,我每次调用它时都会增加我的插入查询。休眠增加我的插入,导致在数据库中重复的行

public void merge(Object entity) { 
     session = HibernateUtil.getSessionFactory().getCurrentSession(); 
     session.beginTransaction();  
     session.merge(entity); 
     session.getTransaction().commit();  
    } 

我把上面的从我的servlet。

,并得到

Hibernate: insert into marker (organisation, projectId) values (?, ?) 

,如果我把它再我得到

Hibernate: insert into marker (organisation, projectId) values (?, ?) 
Hibernate: insert into marker (organisation, projectId) values (?, ?) 

和第三次

Hibernate: insert into marker (organisation, projectId) values (?, ?) 
Hibernate: insert into marker (organisation, projectId) values (?, ?) 
Hibernate: insert into marker (organisation, projectId) values (?, ?) 

等等。所以它看起来像我每次合并它会调用插入一个额外的时间。我可以在我的数据库记录中看到它确实增加了插入,并且我也从servlet调用了我的方法,如果这可能意味着什么的话。

回答

0

使用saveOrUpdate显然修复了它。我不知道是什么造成的。

+0

saveOrUpdate是解决方案。 该方法根据操作调用save()或update()。如果标识符存在,它将调用update方法,否则将调用save方法。 –