隨筆-3  評論-2  文章-0  trackbacks-0
            2008年9月23日

          session.update不能直接用,因?yàn)樗且訧D為主鍵,必須查詢出ID才能進(jìn)行更新。。。

          Usertable user=null;

          Session session=HibernateSessionFactory.getSession();
          String sql="from Usertable as user where user.username=?";
          Query q=session.createQuery(sql);
          q.setString(0,username);
          List l=q.list();
          Iterator ite=l.iterator();
          if(ite.hasNext()){
             user=(Usertable)ite.next();
            
          }
          return user;

          查詢完以后才能更新用SESSION.UPDATE就行了。

          posted @ 2008-09-23 20:12 想想 閱讀(308) | 評論 (0)編輯 收藏
          請高手教教我吧.
          在hibernate中查詢數(shù)據(jù),查詢語句中包含sql函數(shù)String sql = (select * from employee emp where left(dbo.f_GetPy(name,1)='要查詢的字母')
          其中dbo.f_GetPy(name),1)為sql server 2000中的自定義函數(shù),"name"是列名。其作用是按漢字的字符串的第一個字的英文首字母查出相應(yīng)的字符串(按首字母查詢)。
          我用的是List list = session.createSQLQuery(sql)
          .addEntity("emp",Employee.class)
          .list() ;
          方法。
          報的錯誤是.list()那行。sql語句在查詢分析器中試過了,沒問題。具體錯誤代碼如下:

          HTTP Status 500 -

          --------------------------------------------------------------------------------

          type Exception report

          message

          description The server encountered an internal error () that prevented it from fulfilling this request.

          exception

          javax.servlet.ServletException: could not execute query
          org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
          org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
          org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
          org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
          yfy.struts.MyActionServlet.process(MyActionServlet.java:17)
          org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


          root cause

          org.hibernate.exception.SQLGrammarException: could not execute query
          org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
          org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
          org.hibernate.loader.Loader.doList(Loader.java:2148)
          org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
          org.hibernate.loader.Loader.list(Loader.java:2024)
          org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111)
          org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1655)
          org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
          org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
          yfy.dao.BaseDaoImpl.execSQLQuery(BaseDaoImpl.java:138)
          yfy.struts.action.EmpNameListAction.execute(EmpNameListAction.java:40)
          org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
          org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
          org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
          yfy.struts.MyActionServlet.process(MyActionServlet.java:17)
          org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

          請高手們幫我解答。謝謝
          posted @ 2008-09-23 19:01 想想 閱讀(601) | 評論 (2)編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 永宁县| 兖州市| 禹城市| 松原市| 娱乐| 达州市| 天等县| 永安市| 甘洛县| 宜章县| 玉龙| 长治县| 兰溪市| 筠连县| 昆明市| 共和县| 陕西省| 祁门县| 新干县| 河池市| 钦州市| 宿松县| 公主岭市| 西丰县| 侯马市| 治多县| 古蔺县| 青州市| 车险| 璧山县| 平昌县| 邳州市| 加查县| 新巴尔虎右旗| 休宁县| 万宁市| 河池市| 精河县| 文成县| 开封县| 泰和县|