Hibernate:使用重複物件識別碼進行異常處理
錯誤訊息「Hibernate:具有相同識別碼值的不同物件已與當檔Hibernate 遇到具有已與目前會話關聯的現有識別碼的物件時,就會發生「session」。 🎜>
在提供的程式碼中:<code class="java">public E save(E e) { Session session = null; try { session = sessionFactory.openSession(); log.debug("session="+session.hashCode()+" save "+e); session.saveOrUpdate(e); //here throws exception session.flush(); } catch (Exception e1) { log.err("Cannot open hibernate session "+ e1.getMessage()+" cause : "+e1.getCause()); e1.printStackTrace(); } finally { if ( session != null ) session.close(); session = null;} return e ; }</code>
userbean#1 |---|-----------***userbean.groups | | groupbean#1 | | groupbean.roles | | rolebean#1 # save relebean#1 the first time | | ---done rolebean#1 | | ------done all rolebeans of group.roles | | ---done groupbean#1 | |-----------done all groupbeans of userbean.groups |---|-----------***userbean.roles | rolebean#1 # save rolebean#1 the second time, and throws exception here! | ----done rolebean#1 | ..... |-----------done all rolebeans of userbean.roles
使用
session.merge()以上是為什麼 Hibernate 在保存具有嵌套集合的使用者 bean 時會拋出「具有相同標識符值的不同物件已與會話關聯」異常,以及如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!