[問題] Hibernate executeUpdate的問題

看板java作者 (= =)時間4年前 (2020/07/23 16:15), 4年前編輯推噓1(105)
留言6則, 5人參與, 4年前最新討論串1/1
※狀況概述: 以下的程式,執行第一次update時還可以跑到commit,但是在頁面上 仍然顯示修改前的結果。 但第二次執行update時,就卡住到不了commit。 ※程式碼: public void edit(Customer customer){ Transaction tx = getSession().beginTransaction(); try { SQLQuery query = getSession().createSQLQuery("update CUSTOMER set NAME='"+customer.getName()+"', ADDRESS='"+customer.getAddress()+"'"+ " where CUSTOMER_ID="+customer.getCustomerId()+""); query.executeUpdate(); tx.commit(); }catch (Exception e) { tx.rollback(); } } ※錯誤訊息: 沒跳錯誤訊息,就是一直卡住不動。 ※補充說明: 我把上面產生出來的SQL,貼到sqldeveloper上面去執行,是可以正常執行的。 為甚麼update後有執行commit,之後的update卻仍然卡住,請問卡住不動的原因是什麼呢? 另外我將以上的寫法改成: getHibernateTemplate().update(customer); 結果也是一樣。 ----------------------- 改寫成以下這樣就好了: public void edit(Customer customer){ Session session = getHibernateTemplate().getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); session.update(customer); tx.commit(); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.53.239 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1595492119.A.8F4.html

07/23 17:05, 4年前 , 1F
e.printstacktrace() 貼上去看一下錯誤...
07/23 17:05, 1F
※ 編輯: lueichun (1.162.210.36 臺灣), 07/23/2020 22:01:30

07/23 23:53, 4年前 , 2F
真的想追原因的話,試著用debugger吧
07/23 23:53, 2F

07/24 22:07, 4年前 , 3F
我猜少了session.close
07/24 22:07, 3F

07/26 14:55, 4年前 , 4F
同上,commit後,連線沒關,可以試試看程式跑完後到D
07/26 14:55, 4F

07/26 14:55, 4年前 , 5F
B執行for update,如果lock就是沒關連線
07/26 14:55, 5F

07/26 22:25, 4年前 , 6F
是不是第一個的getSession()用static放session
07/26 22:25, 6F
文章代碼(AID): #1V6KSNZq (java)
文章代碼(AID): #1V6KSNZq (java)