当前位置: 代码迷 >> J2EE >> 使用 Hibernate 的 update()方法出现奇怪的有关问题
  详细解决方案

使用 Hibernate 的 update()方法出现奇怪的有关问题

热度:587   发布时间:2016-04-22 03:37:16.0
使用 Hibernate 的 update()方法出现奇怪的问题
DAO中,我写了个 update 方法 如下:
Java code
/**     * 自己写的更新记录函数     */    public boolean UpdateOperatorInfo(OperatorInfo operatorinfo){        boolean b=false;        Session session=(Session) this.getSession();        Transaction tron=session.beginTransaction();        try{            OperatorInfo opinfo=new OperatorInfo();            session.load(opinfo, operatorinfo.getOperatorId());            opinfo.setOperatorName(operatorinfo.getOperatorName());            opinfo.setOperatorPwd(operatorinfo.getOperatorPwd());            opinfo.setIsAdmin(operatorinfo.getIsAdmin());            session.update(opinfo);            //session.flush();            tron.commit();            b=true;        }catch(HibernateException e){            if(tron!=null){                tron.rollback();                e.printStackTrace();                            }        }finally{            session.close();        }        return b;    }


然后我在jsp页面中调用 更新数据库中的 operator表

jsp页面的代码如下:

Java code
<%@ page language="java"  pageEncoding="utf-8" import="pojo.OperatorInfo,pojo.OperatorInfoDAO,java.util.Iterator"%><%request.setCharacterEncoding("utf-8"); %><%    String s_id=request.getParameter("id");     String name=request.getParameter("name");    String pwd=request.getParameter("pwd");    String isno=request.getParameter("isno");        name=name.trim();    pwd=pwd.trim();    isno=isno.trim();            OperatorInfoDAO opdao=new OperatorInfoDAO();    OperatorInfo opinfo=new OperatorInfo();        opinfo.setOperatorId(Integer.parseInt(s_id));    opinfo.setIsAdmin(isno);    opinfo.setOperatorName(name);    opinfo.setOperatorPwd(pwd);        //out.println(opinfo.getOperatorId());    if(opdao.UpdateOperatorInfo(opinfo)){        response.sendRedirect("addoperator.jsp");    }else{        out.println("你必须手动刷新一下本页才能更新成功,为什么,我也不知道");    }        //opdao.attachDirty(opinfo);    //response.sendRedirect("addoperator.jsp");    %>


问题出来了,点击更新之后,首先显示更新失败,然后 你手动刷新几下网页,才能更新成功。 每次都得刷新几下才行,我的电脑不关机,你可以访问我的电脑运行一下看看,到底是怎么回事,我用的 TOMCAT 5.5 MSSQL2000
访问我电脑的地址是:http://www.cao123.cn:8080/cn_mobile/addoperator.jsp

进去之后,点 更新 查看病灶。删除倒是正常,就是那个更新操作,真郁闷了,请求大家帮助下,谢谢! 明天过来重谢!


------解决方案--------------------
1,更新失败的异常是什么?
2,就更新操作的话,搞不懂为什么要先从数据库中取出数据,封装成对象,更新对象的属性,再持久化到数据库 呢?一条简单的SQL并且只操作一次数据库不就搞定了呀..我不太明白.

------解决方案--------------------
session.flush()
是需要执行的。
------解决方案--------------------
加载延时问题.网上找找.有相应的办法.或打我qq:427731398
  相关解决方案