2015-10-06 53 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方法。 –