<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yunye 的 JavaBlog

    @see codemouse

    統(tǒng)計

    留言簿(1)

    閱讀排行榜

    評論排行榜

    求救Hibernate 問題,急,請幫我看下我的代碼,好么!

    ?

    我想在 JSP 頁面中向數(shù)據(jù)庫表 staff 插入一條記錄:頁面能跳轉(zhuǎn)到 addStaffSuccess.jsp

    刷新頁面時,添加的記錄能在頁面中顯示出來,我還以為成功了,于是我想通過企業(yè)管理器打開數(shù)據(jù)庫表看是不是數(shù)據(jù)庫表更新了,發(fā)現(xiàn)數(shù)據(jù)庫表不顯示數(shù)據(jù),我插入的是第二條記錄,于是我讓它返回首行,首行正常顯示。我用查詢分析器查詢 Staff 表的數(shù)據(jù),一直是“正在執(zhí)行批查詢狀態(tài) ……… ”說明我對數(shù)據(jù)庫的操作影響到了數(shù)據(jù)庫,但是出了我不知道的異常或錯誤,但是又不報錯,我不知道怎么去找原因。忘了,當(dāng)我停止 tomcat 時,數(shù)據(jù)表正常顯示,但插入的數(shù)據(jù)沒有顯示在表里,說明沒有插入。難道是我沒停止 tomcat 前,數(shù)據(jù)庫一直在更新么?

    我用的環(huán)境是, eclipse3.2+Myeclipse5.5 + MS SQL server2000+ tomcat5.5

    我添加了 struts hibernate 支持,各個持久化類和 DAO , 是通過映射后 hibernate 自動生成的。 Action 代碼是我寫的,不足道有錯沒,請指正。

    ??? 添加后,返回原頁面,顯示了添加的信息:(但數(shù)據(jù)庫沒更新,郁悶!

    ?

    數(shù)據(jù)庫:

    staff (staffid,// 主鍵

    staffname,//not null

    password,//not null

    departmentname;// 允許空

    sex;// 允許空

    email;// 允許空

    mobile;// 允許空 )

    StaffDAO 里面:(這是 hibernate 映射數(shù)據(jù)庫表后自動生成的方法)

    ???? public void save(Staff transientInstance) {

    ?????? log .debug( "saving Staff instance" );

    ?????? try {

    ?????????? getSession().save(transientInstance);

    ?????????? log .debug( "save successful" );

    ?????? } catch ( RuntimeException re) {

    ?????????? log .error( "save failed" , re);

    ?????????? throw re;

    ?????? }

    ??? }

    AddStaffAction 里面:

    ?? public ActionForward execute(ActionMapping mapping, ActionForm form,

    ?????????? HttpServletRequest request, HttpServletResponse response) {

    ?????? // 獲得表單信息;

    ?????? AddStaffForm addStaffForm = (AddStaffForm) form; // TODO Auto-generated method stub

    ?????? String staffid = addStaffForm.getStaffid();

    ?????? String staffname = addStaffForm.getStaffname();

    ?????? String departmentname = addStaffForm.getDepartmentname();

    ?????? String sex = addStaffForm.getSex();

    ?????? String password = new String( "000000" );

    ??????

    ?????? // 轉(zhuǎn)換字符格式

    ?????? try {

    ?????????? ?staffid = new String(staffid.getBytes( "ISO-8859-1" ), "GB2312" );

    ?????????? ?staffname = new String(staffname.getBytes( "ISO-8859-1" ), "GB2312" );

    ?????????? ?departmentname = new String(departmentname.getBytes( "ISO-8859-1" ), "GB2312" );

    ?????????? ?sex = new String(sex.getBytes( "ISO-8859-1" ), "GB2312" );

    ?????????? ?password = new String(password.getBytes( "ISO-8859-1" ), "GB2312" );????????

    ?????? ??? } catch (UnsupportedEncodingException e) {

    ?????????? ? // TODO Auto-generated catch block

    ?????????? ?? e.printStackTrace();

    ?????? ??? }

    ?????? ??? Staff staff = new Staff();

    ?????????? ? staff.setStaffid(staffid);

    ?????????? ? staff.setStaffname(staffname);

    ?????????? ? staff.setPassword(password);

    ?????????? ? staff.setDepartmentname(departmentname);

    ?????????? ? staff.setSex(sex);???????? ?????????????????????????????????????????????????????

    ?????? ??? try {

    ????????????? StaffDAO dao = new StaffDAO();

    ????????????? ???????? dao.save(staff);

    ?????????? } catch (Exception e) {

    ????????????? // TODO Auto-generated catch block

    ????????????? e.printStackTrace();???????????

    ?????????? }

    ???????????????? return mapping.findForward( "addStaffSuccess" );??????? ??? }

    posted on 2008-03-25 20:58 yunye 閱讀(618) 評論(5)  編輯  收藏

    評論

    # re: 求救Hibernate 問題,急,請幫我看下我的代碼,好么![未登錄] 2008-03-25 21:58 flustar

    你action里寫那么多try...catch干什么
    把你的日志記錄貼出來,我?guī)湍憧纯?
    很有可能是的你的Dao類寫的有問題
    順便問一下:
    “添加后,返回原頁面,顯示了添加的信息”
    你這個顯示了添加的信息是怎么得到的?  回復(fù)  更多評論   

    # re: 求救Hibernate 問題,急,請幫我看下我的代碼,好么! 2008-03-26 21:36 云野

    字符轉(zhuǎn)換的時候,不撲捉異常,它報錯,以前在做JSP頁面時,字符轉(zhuǎn)換不用捕捉異常的,不知道是不是在Hibernate環(huán)境下的原因
    進(jìn)行數(shù)據(jù)庫操作時,我看到書籍上都進(jìn)行異常捕捉的,我就照做了。
    在頁面顯示數(shù)據(jù),我用了一個Action的
    public class UserListAction extends Action {
    /*
    * Generated Methods
    */

    /**
    * Method execute
    * @param mapping
    * @param form
    * @param request
    * @param response
    * @return ActionForward
    */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    // TODO Auto-generated method stub
    List stafflist = null;
    try {
    StaffDAO dao = new StaffDAO();

    stafflist = (List)dao.findAll();
    } catch (HibernateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    request.setAttribute("staffall", stafflist);


    return mapping.findForward("userlistmanage");
    }
    JSP頁面:
    <body>
    <html:errors/>
    <logic:present name="staffall" scope="request">

    <table cellspacing="0" cellpadding="0" border="1" align="center">
    <tbody>
    <tr><td colspan="10" align="right"><html:link href="/FileManage/addStaffStep1.do">添加職員信息</html:link></td> </tr>
    <tr><td colspan="10" align="center">職員信息</td> </tr>
    <tr><td>職員號</td><td>姓名</td><td>部門</td><td>性別</td><td>電子郵件</td>
    <td>地址</td><td>手機(jī)號碼</td><td colspan="3">操作</td></tr>
    <logic:iterate id="stafflist" name="staffall">
    <tr>
    <td> <bean:write name="stafflist" property="staffid" /> </td>
    <td> <bean:write name="stafflist" property="staffname"/></td>
    <td> <bean:write name="stafflist" property="departmentname"/></td>
    <td> <bean:write name="stafflist" property="sex"/> </td>
    <td> <bean:write name="stafflist" property="email"/></td>
    <td> <bean:write name="stafflist" property="address"/></td>
    <td> <bean:write name="stafflist" property="mobile"/></td>
    <td><html:link href="/FileManage/lookFileList.do">文件目錄</html:link></td>
    <td><html:link href="/FileManage/modifyStaff.do">修改</html:link></td>
    <TD><html:link href="/FileManage/deleteStaff.do">刪除</html:link></TD>
    </tr>
    </logic:iterate>
    </tbody></table>
    </logic:present>
    </body>


    原來自動生成的DAO方法有點問題,我改動了一下,好象可以了:
    public void save(Staff transientInstance) {
    log.debug("saving Staff instance");
    org.hibernate.Transaction tx = null;
    tx=getSession().beginTransaction();
    try {
    getSession().save(transientInstance);
    tx.commit();
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    if(tx!=null){
    tx.rollback();
    }
    throw re;
    }
    }

      回復(fù)  更多評論   

    # re: 求救Hibernate 問題,急,請幫我看下我的代碼,好么! 2008-03-26 22:50 flustar

    自己寫個轉(zhuǎn)換編碼的Filter,在web.xml配置一下就行了, 就沒有必要寫那些轉(zhuǎn)換的代碼了。你看得是誰寫的書,作者的水平似乎不怎么行啊,Action里直接調(diào)用DAO合適嗎,還有在action里捕獲異常,用try...catch也不合適,不是可以用異常聲明嗎,在xml里配置一下不就行了。  回復(fù)  更多評論   

    # re: 求救Hibernate 問題,急,請幫我看下我的代碼,好么! 2008-03-28 16:03 wjywilliam

    問你一句,你的Transaction怎么處理的,處理了沒有,在哪里?  回復(fù)  更多評論   

    # re: 求救Hibernate 問題,急,請幫我看下我的代碼,好么! 2008-03-30 23:53 Robin's Java World

    問題應(yīng)該就出在你的transaction上.  回復(fù)  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲最大福利视频网站| 亚洲精品无码专区久久| 国产在线播放线91免费| 亚洲美女免费视频| 日韩免费观看的一级毛片| 精品国产免费人成网站| 亚洲妇女水蜜桃av网网站| 日韩在线免费播放| 国产午夜无码精品免费看| 亚洲宅男精品一区在线观看| 亚洲成?v人片天堂网无码| 中文字幕在线免费观看| 免费无码国产在线观国内自拍中文字幕| 亚洲精品中文字幕乱码三区| 日韩毛片免费无码无毒视频观看 | 精品免费久久久久久成人影院| 国产成人高清亚洲一区久久| 亚洲AV日韩AV天堂一区二区三区| 精品免费国产一区二区| 99爱视频99爱在线观看免费| 黄网站色视频免费看无下截| 亚洲精品美女视频| 国产偷国产偷亚洲高清日韩| 午夜老司机免费视频| 麻豆成人久久精品二区三区免费| 黄色毛片免费在线观看| 亚洲人成在线免费观看| 亚洲日韩精品一区二区三区 | 成人一区二区免费视频| 国产亚洲福利在线视频| 国产成A人亚洲精V品无码| 国产大片免费观看中文字幕| 久久久久高潮毛片免费全部播放| 四虎国产精品成人免费久久| 亚洲男人天堂2018av| 亚洲人成网站在线播放影院在线| 亚洲精品无码成人片在线观看| 成人A级毛片免费观看AV网站| 99在线观看免费视频| 伊人久久大香线蕉免费视频| 免费人成动漫在线播放r18|