2010-06-14 70 views
0

當我使用Hibernate的saveOrUpdate(Object)方法時。我如何知道行更新或新行添加到表中? saveOrUpdate(Object)方法的返回類型是void,因此在調用此方法後無法找到結果。Hibernate的saveOrUpdate(Object)方法

請幫助我。

回答

1

如果被保留的對象具有標識符屬性設置爲0(/ ID爲空),那麼它意味着它是一個新的對象,將在分貝新插入。 插入後,hibernate會在標識符字段中設置id值。 如果對象已經設置了標識符屬性,那麼這意味着對象已經存在並且可以更新

編輯:你看過冬眠攔截器了嗎?可能是有用的。 example

+0

是的,你是對的daedlus,但喜歡當我們使用save()方法將其返回序列化,我們可以在長變量存儲,如果它大於0L意味着添加一行,但是當我們使用saveOrUpdate()方法方法是不返回任何東西,我們如何知道它是更新或添加任何行。任何方法或代碼? 由於提前 – Vikram 2010-06-14 12:47:31

+0

是上面的檢查還不足以知道,如果行被插入或更新?你的用例是什麼? – Inv3r53 2010-06-14 13:35:10

1

據我所知你的問題和評論居住。您可以創建事件偵聽器並實現兩個接口:IPreUpdateEventListener,IPreInsertEventListener

e.q.

 public class AuditEventListener : IPreUpdateEventListener, IPreInsertEventListener 
    { 

     public bool OnPreUpdate(PreUpdateEvent @event) 
     { 
      //your stuff here 
      return false; 
     } 

     public bool OnPreInsert(PreInsertEvent @event) 
     { 

      //your stuff here 
      return false; 
     } 
} 

但我覺得這很荒謬。使用ORM意味着你不關心持久性,所有的工作都是完成單位工作。如果你真的需要插入和更新只需使用保存()或update()方法,這樣你就會知道究竟是用哪種操作。

相關問題