簡體   English   中英

我在這里缺少什么(休眠開始事務)

[英]What I am missing here (Hibernate begin transaction)

我有一個測試課:

 class SomeTest {
       public static void main(String args[]){
       Client kom = new Client();
       kom.setId(kom.newID());
       kom.setClient("OldName");
       SessionFactory sessionFactory =  new    Configuration().configure().buildSessionFactory();
       Session session = sessionFactory.openSession();
       session.beginTransaction();
          session.save(kom); // I think insert is here ?
          Query q = session.createSQLQuery(" call change_name(:old, :new) ");
          q.setParameter("old","OldName");
          q.setParameter("new","NewName");
          int result = q.executeUpdate();
          session.getTransaction().commit();
        }
     };

和數據庫存儲過程change_name進行客戶端名稱的更新..每次運行測試時,我都有一條帶有舊名稱的記錄? 我希望更新是在同一事務中執行的,並且我永遠都不會看到舊名稱?

JB Nizet有正確答案。

save()不會插入。 它將對象與會話相關聯。 插入查詢在下一次刷新時執行。 因此,在調用存儲的proc之前,顯式調用flush。 –昨天,JB Nizet

還有FlushMode ...我總是設置為。 我調用了許多程序來更改數據庫中的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM