看板 java 關於我們 聯絡資訊
※狀況概述: 以下的程式,執行第一次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
swallowcc: e.printstacktrace() 貼上去看一下錯誤... 07/23 17:05
※ 編輯: lueichun (1.162.210.36 臺灣), 07/23/2020 22:01:30
tw11509: 真的想追原因的話,試著用debugger吧 07/23 23:53
achaos: 我猜少了session.close 07/24 22:07
rexking1022: 同上,commit後,連線沒關,可以試試看程式跑完後到D 07/26 14:55
rexking1022: B執行for update,如果lock就是沒關連線 07/26 14:55
fgh81113: 是不是第一個的getSession()用static放session 07/26 22:25