作者lueichun (= =)
看板java
標題[問題] Hibernate executeUpdate的問題
時間Thu Jul 23 16:15:17 2020
※狀況概述:
以下的程式,執行第一次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://webptt.com/m.aspx?n=bbs/java/M.1595492119.A.8F4.html
1F:→ swallowcc: e.printstacktrace() 貼上去看一下錯誤... 07/23 17:05
※ 編輯: lueichun (1.162.210.36 臺灣), 07/23/2020 22:01:30
2F:→ tw11509: 真的想追原因的話,試著用debugger吧 07/23 23:53
3F:→ achaos: 我猜少了session.close 07/24 22:07
4F:推 rexking1022: 同上,commit後,連線沒關,可以試試看程式跑完後到D 07/26 14:55
5F:→ rexking1022: B執行for update,如果lock就是沒關連線 07/26 14:55
6F:→ fgh81113: 是不是第一個的getSession()用static放session 07/26 22:25