作者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/cn.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