Hibernate更新出錯(cuò)的解決
今天在項(xiàng)目里遇到這樣一個(gè)問題,使用Hibernate進(jìn)行修改操作saveOrUpdate()或者是update()時(shí)出了這樣一個(gè)錯(cuò)誤,即Hibernate更新出錯(cuò)。根據(jù)異常信息的字面意思,大致意思是說, 在一個(gè)session對象中同時(shí)存在著重復(fù)的相同標(biāo)識的卻是不同的對象。
我遇到的情況是這樣的,客戶端進(jìn)行插入操作,這個(gè)時(shí)候所插入的這個(gè)對象緩存在session中,而用戶在插入后又對同一個(gè)對象,進(jìn)行修改操作,那么這個(gè)時(shí)候,同樣標(biāo)識的一個(gè)對象又發(fā)送到服務(wù)端,那么一個(gè)session中就存在了兩個(gè)標(biāo)識相同的對象,而對象中的內(nèi)容卻不一樣,所以Hibernate會報(bào)這個(gè)錯(cuò),同樣是Hibernate更新出錯(cuò)。那么針對于這種Hibernate更新出錯(cuò),該如何解決呢?
應(yīng)該有許多種方法,這里我用了session.clear()在每次更新操作之前,先把session清空掉。代碼如下:
- public int saveOrUpdate(String classPath, Object obj) {
- try {
- getSession().saveOrUpdate(classPath, obj);
- //每次操作之后清空session
- getSession().flush();
- getSession().clear();
- } catch (RuntimeException re) {
- re.printStackTrace();
- }
- }
這只是對我所遇到的Hibernate更新出錯(cuò)問題的解決辦法之一,如果哪里說的不正確希望大家批評指正,互相學(xué)習(xí)。
【編輯推薦】