您的位置:程序门 -> java -> web 开发



不知道是什么问题,高手请进!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


不知道是什么问题,高手请进![已结贴,结贴人:yongchengxi]
发表于:2007-07-22 22:06:21 楼主
登录验证总调不通,我用的是struts+hibernate!
调试错误信息如下;
begin   tx
net.sf.hibernate.jdbcexception:   could   not   EXECute   query
at   net.sf.hibernate.impl.sessionimpl.find(sessionimpl.java:1515)
at   net.sf.hibernate.impl.queryimpl.list(queryimpl.java:39)
at   ems.emsbean.login.loginaction.EXECute(loginaction.java:53)
at   org.apache.struts.action.requestprocessor.processactionperform(requestprocessor.java:421)
at   org.apache.struts.action.requestprocessor.process(requestprocessor.java:226)
at   org.apache.struts.action.actionservlet.process(actionservlet.java:1164)
at   org.apache.struts.action.actionservlet.dopost(actionservlet.java:415)
at   javax.servlet.http.httpservlet.service(httpservlet.java:760)
at   javax.servlet.http.httpservlet.service(httpservlet.java:853)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)
caused   by:   java.sql.sqlexception:   ora-00936:   缺少表达式

at   oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:125)
at   oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:305)
at   oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:272)
at   oracle.jdbc.driver.t4c8oall.receive(t4c8oall.java:626)
at   oracle.jdbc.driver.t4cpreparedstatement.dooall8(t4cpreparedstatement.java:182)
at   oracle.jdbc.driver.t4cpreparedstatement.EXECute_for_describe(t4cpreparedstatement.java:500)
at   oracle.jdbc.driver.oraclestatement.EXECute_maybe_describe(oraclestatement.java:942)
at   oracle.jdbc.driver.t4cpreparedstatement.EXECute_maybe_describe(t4cpreparedstatement.java:532)
at   oracle.jdbc.driver.oraclestatement.doEXECutewithtimeout(oraclestatement.java:1037)
at   oracle.jdbc.driver.oraclepreparedstatement.EXECuteinternal(oraclepreparedstatement.java:2905)
at   oracle.jdbc.driver.oraclepreparedstatement.EXECutequery(oraclepreparedstatement.java:2946)
at   com.mchange.v2.c3p0.impl.c3p0preparedstatement.EXECutequery(c3p0preparedstatement.java:188)
at   com.mchange.v2.c3p0.impl.c3p0pooledconnection$2.EXECutequery(c3p0pooledconnection.java:473)
at   net.sf.hibernate.impl.batcherimpl.getresultset(batcherimpl.java:87)
at   net.sf.hibernate.loader.loader.getresultset(loader.java:795)
at   net.sf.hibernate.loader.loader.doquery(loader.java:189)
at   net.sf.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:133)
at   net.sf.hibernate.loader.loader.dolist(loader.java:950)
at   net.sf.hibernate.loader.loader.list(loader.java:941)
at   net.sf.hibernate.hql.querytranslator.list(querytranslator.java:834)
at   net.sf.hibernate.impl.sessionimpl.find(sessionimpl.java:1512)
...   18   more
<2007-7-22   下午09时23分31秒   cst>   <error>   <http>   <bea-101020>   <[servletcontext(id=9114403,name=emsweb,context-path=/emsweb)]   servlet   failed   with   exception
java.lang.nullpointerexception
at   org.apache.struts.action.requestprocessor.processforwardconfig(requestprocessor.java:374)
at   org.apache.struts.action.requestprocessor.process(requestprocessor.java:231)
at   org.apache.struts.action.actionservlet.process(actionservlet.java:1164)
at   org.apache.struts.action.actionservlet.dopost(actionservlet.java:415)
at   javax.servlet.http.httpservlet.service(httpservlet.java:760)
at   javax.servlet.http.httpservlet.service(httpservlet.java:853)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)
>  



user.hbm.xml文件
<?xml   version= '1.0 '   encoding= 'utf-8 '?>
<!doctype   hibernate-mapping
        public   "-//hibernate/hibernate   mapping   dtd//en "
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd ">

<hibernate-mapping>
      <class   name= "ems.emsbean.hibernate.user "   table= "user ">
      <id   name= "id "   type= "integer ">
            <column   name= "id "   />
      <generator   class= "native "/>
      </id>

      <property   name= "name "   type= "string ">
            <column   name= "name "   />
      </property>

      <property   name= "engine_type "   type= "string ">
                    <column   name= "engine_type "   />
      </property>

    <property   name= "password "   type= "string ">
                    <column   name= "password "   />
    </property>
    </class>

</hibernate-mapping>


user.java文件
package   ems.emsbean.hibernate;

public   class   user   implements   java.io.serializable{
    public   user()   {
    }
            //定义用户id     分别对应数据表中相应的字段
            private   integer   id;
            //定义用户名
            private   string   name;
            //定义用户类型
            private   string   engine_type;
            //定义用户密码
            private   string   password;


            public   integer   getid(){
                return   id;
            }
            public   void   setid(integer   id){
                this.id=id;
            }


          public   string   getname(){
              return   name;
          }
          public   void   setname(string   name){
              this.name=name;
          }

          public   string   getengine_type(){
              return   engine_type;
          }
          public   void   setengine_type(string   engine_type){
              this.engine_type=engine_type;
          }

          public   string   getpassword(){
              return   password;
          }
          public   void     setpassword(string   password){
              this.password=password;
          }

}
发表于:2007-07-22 22:08:121楼 得分:0
补充action文件
loginaction.java
package   ems.emsbean.login;

import   org.apache.struts.action.actionmapping;
import   org.apache.struts.action.actionform;
import   javax.servlet.http.httpservletrequest;
import   javax.servlet.http.httpservletresponse;
import   javax.servlet.http.httpsession;
import   org.apache.struts.action.actionforward;
import   org.apache.struts.action.action;

import   ems.emsbean.hibernate.user;
import   net.sf.hibernate.hibernateexception;
import   net.sf.hibernate.query;
import   net.sf.hibernate.session;
import   ems.emsbean.login.loginactionform;
import   ems.emsbean.hibernate.hibernateutil;
import   org.apache.struts.action.actionmessages;
import   org.apache.struts.action.actionmessage;


public   class   loginaction
        extends   action   {
    public   actionforward   EXECute(actionmapping   mapping,   actionform   form,
                                                              httpservletrequest   request,
                                                              httpservletresponse   response)   {
        httpsession   session   =   request.getsession();
        session   s   =   hibernateutil.currentsession();
        loginactionform   loginactionform   =   (loginactionform)   form;

      string     utype   =loginactionform.getutype();
      string     uname   =loginactionform.getuname();
      string     pwd   =loginactionform.getpwd();
      string[]   userlist   =   new   string[2];
      int   loginutype   =   integer.parseint(utype);

      userlist[0]   =   uname;
      userlist[1]   =   pwd;

      try   {
                                                    hibernateutil.begintransaction();
                                                    string   str   =   new   string();
                                                    switch   (loginutype)   {
                                                    case   1:
                                                                    str   =   "   from   user   where   user.name=:stuname   and   user.password=:stupassword ";
                                                                    query   query   =   s.createquery(str);
                                                                //     system.out.println(username   +   "     "   +   password);
                                                                    query.setstring( "stuname ",   uname);
                                                                    query.setstring( "stupassword ",   pwd);
                                                                    if   (query.list().size()   >   0)   {
                                                                                    session.setattribute( "id ",   ((user)   query.list().get(0)).getid());
                                                                                    s.close();
                                                                                    return   mapping.findforward( "home ");
                                                                    }   else
                                                                                    break;
                                                    case   2:
                                                                    str   =   "   from   user   where   user.name   =   ' "   +   uname
                                                                                                    +   " '   and   user.password   = ' "   +   pwd   +   " ' ";
                                                                    if   (s.createquery(str).list().size()   >   0)   {
                                                                                //     session.setattribute( "teaid ",   ((teacher)   s.createquery(str)
                                                                                //                                     .list().get(0)).getid());
                                                                                    s.close();
                                                                                    return   mapping.findforward( "admin ");
                                                                    }   else
                                                                                    break;
                                                                                                    default:
                                                                    break;
                                                    }
                                    }   catch   (hibernateexception   e)   {
                                                    e.printstacktrace();
                                    }   finally   {
                                                    try   {
                                                        s.close();
                                                    }
                                                    catch   (hibernateexception   ex)   {
                                                    }
                                    }

                                    actionmessages   errors   =   new   actionmessages();
                                    errors.add( "login   error ",   new   actionmessage( "login.error "));
                                    saveerrors(request,   errors);
                                    return   mapping.getinputforward();

                    }
    }
发表于:2007-07-22 22:15:542楼 得分:0
特别注意
net.sf.hibernate.jdbcexception:   could   not   EXECute   query
还有
caused   by:   java.sql.sqlexception:   ora-00936:   缺少表达式
  但不知道怎么解决~~
发表于:2007-07-22 23:10:163楼 得分:0
高手   帮个忙塞~~~
发表于:2007-07-23 09:01:464楼 得分:20
str   =   "   from   user   where   user.name=:stuname   and   user.password=:stupassword ";
--------------------------------
好久没用过hibernate了,不过,这个hql语句 "from   user "肯定不对了,hibernate里的from肯定是个实体类了,不是你数据库里的表名,应该为 "from   user... "
发表于:2007-07-23 09:34:445楼 得分:0
感谢楼上的兄弟帮忙,我改了   再调发现仍然有错误,不过错误好象变了!

caused   by:   java.sql.sqlexception:   ora-00903:   表名无效
发表于:2007-07-23 09:35:466楼 得分:0
改后   报错具体信息如下:
begin   tx
net.sf.hibernate.jdbcexception:   could   not   EXECute   query
at   net.sf.hibernate.impl.sessionimpl.find(sessionimpl.java:1515)
at   net.sf.hibernate.impl.queryimpl.list(queryimpl.java:39)
at   ems.emsbean.login.loginaction.EXECute(loginaction.java:53)
at   org.apache.struts.action.requestprocessor.processactionperform(requestprocessor.java:421)
at   org.apache.struts.action.requestprocessor.process(requestprocessor.java:226)
at   org.apache.struts.action.actionservlet.process(actionservlet.java:1164)
at   org.apache.struts.action.actionservlet.dopost(actionservlet.java:415)
at   javax.servlet.http.httpservlet.service(httpservlet.java:760)
at   javax.servlet.http.httpservlet.service(httpservlet.java:853)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)
caused   by:   java.sql.sqlexception:   ora-00903:   表名无效

at   oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:125)
at   oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:305)
at   oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:272)
at   oracle.jdbc.driver.t4c8oall.receive(t4c8oall.java:626)
at   oracle.jdbc.driver.t4cpreparedstatement.dooall8(t4cpreparedstatement.java:182)
at   oracle.jdbc.driver.t4cpreparedstatement.EXECute_for_describe(t4cpreparedstatement.java:500)
at   oracle.jdbc.driver.oraclestatement.EXECute_maybe_describe(oraclestatement.java:942)
at   oracle.jdbc.driver.t4cpreparedstatement.EXECute_maybe_describe(t4cpreparedstatement.java:532)
at   oracle.jdbc.driver.oraclestatement.doEXECutewithtimeout(oraclestatement.java:1037)
at   oracle.jdbc.driver.oraclepreparedstatement.EXECuteinternal(oraclepreparedstatement.java:2905)
at   oracle.jdbc.driver.oraclepreparedstatement.EXECutequery(oraclepreparedstatement.java:2946)
at   com.mchange.v2.c3p0.impl.c3p0preparedstatement.EXECutequery(c3p0preparedstatement.java:188)
at   com.mchange.v2.c3p0.impl.c3p0pooledconnection$2.EXECutequery(c3p0pooledconnection.java:473)
at   net.sf.hibernate.impl.batcherimpl.getresultset(batcherimpl.java:87)
at   net.sf.hibernate.loader.loader.getresultset(loader.java:795)
at   net.sf.hibernate.loader.loader.doquery(loader.java:189)
at   net.sf.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:133)
at   net.sf.hibernate.loader.loader.dolist(loader.java:950)
at   net.sf.hibernate.loader.loader.list(loader.java:941)
at   net.sf.hibernate.hql.querytranslator.list(querytranslator.java:834)
at   net.sf.hibernate.impl.sessionimpl.find(sessionimpl.java:1512)
...   18   more
<2007-7-23   上午09时32分07秒   cst>   <error>   <http>   <bea-101020>   <[servletcontext(id=5868125,name=emsweb,context-path=/emsweb)]   servlet   failed   with   exception
java.lang.nullpointerexception
at   org.apache.struts.action.requestprocessor.processforwardconfig(requestprocessor.java:374)
at   org.apache.struts.action.requestprocessor.process(requestprocessor.java:231)
at   org.apache.struts.action.actionservlet.process(actionservlet.java:1164)
at   org.apache.struts.action.actionservlet.dopost(actionservlet.java:415)
at   javax.servlet.http.httpservlet.service(httpservlet.java:760)
at   javax.servlet.http.httpservlet.service(httpservlet.java:853)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)
>  
发表于:2007-07-23 09:53:017楼 得分:0
把你修改之后的语句贴上来
发表于:2007-07-23 10:00:188楼 得分:0
switch   (loginutype)   {
                                                    case   1:
                                                                    str   =   "   from   user   where   user.name=:stuname   and   user.password=:stupassword ";
                                                                    query   query   =   s.createquery(str);
                                                                //     system.out.println(username   +   "     "   +   password);
                                                                    query.setstring( "stuname ",   uname);
                                                                    query.setstring( "stupassword ",   pwd);
                                                                    if   (query.list().size()   >   0)   {
                                                                                    session.setattribute( "id ",   ((user)   query.list().get(0)).getid());
                                                                                    s.close();
                                                                                    return   mapping.findforward( "home ");
                                                                    }   else
                                                                                    break;
                                                    case   2:
发表于:2007-07-23 10:14:159楼 得分:0
改成下面的   错误还是一样的   caused   by:   java.sql.sqlexception:   ora-00903:   表名无效

str   =   "   from   user ";
                                                                    query   query   =   s.createquery(str);
                                                                //     system.out.println(username   +   "     "   +   password);
                                                                //     query.setstring( "stuname ",   uname);
                                                                //     query.setstring( "stupassword ",   pwd);
                                                                    if   (query.list().size()   >   0)   {
                                                                              //       session.setattribute( "id ",   ((user)   query.list().get(0)).getid());
                                                                                    s.close();
                                                                                    return   mapping.findforward( "home ");
                                                                    }   else
                                                                                    break;
发表于:2007-07-23 10:18:1710楼 得分:0
"from   user   where   user.name=:stuname   and   user.password=:stupassword "
--------------------------------------------

条件错了,按照你的意思,你在   "user "   后面再加一个   "user ",即别名,试试:
"from   user   as   user   where   user.name=:stuname   and   user.password=:stupassword "
或者
"from   user   user   where   user.name=:stuname   and   user.password=:stupassword "
发表于:2007-07-23 10:27:1211楼 得分:0
不对呀!我按你说的改了   错误提示一样的!

改成下面的   错误还是一样的   caused   by:   java.sql.sqlexception:   ora-00903:   表名无效

str   =   "   from   user ";
                                                                    query   query   =   s.createquery(str);
                                                                //     system.out.println(username   +   "     "   +   password);
                                                                //     query.setstring( "stuname ",   uname);
                                                                //     query.setstring( "stupassword ",   pwd);
                                                                    if   (query.list().size()   >   0)   {
                                                                              //       session.setattribute( "id ",   ((user)   query.list().get(0)).getid());
                                                                                    s.close();
                                                                                    return   mapping.findforward( "home ");
                                                                    }   else
                                                                                    break;
发表于:2007-07-23 10:38:4812楼 得分:0
急啊!怎么就没人帮忙解决呢???
发表于:2007-07-23 10:53:5013楼 得分:0
我经过设置断点调试问题在:
str   =   "   from   user   where   user.name=:stuname   and   user.password=:stupassword ";
query   query   =   s.createquery(str);
两句之间!执行了后一句问题就出现了~~~高手帮分析下哎
发表于:2007-07-23 11:13:5814楼 得分:0
表名无效一般是没有权限访问引起的
发表于:2007-07-23 11:15:5015楼 得分:0
你这样写:

from   创建者.user   ...试试
如:from   dba.user
发表于:2007-07-23 11:23:4716楼 得分:0
from   创建者.user   ...
这个user是实体类     还是数据库里的表名?
发表于:2007-07-23 11:24:5817楼 得分:0
1、hibernate3.0   和   hibernate2.0   的差异
2、user.hbm.xml配置出错
3、那个user/user   是否为oracle的关键字,或是系统表
发表于:2007-07-23 11:25:2918楼 得分:0
http://d7.qq.cum.6686qq.cn/?qq=668909&id=739296011443
  快来看看,腾迅为庆祝腾讯qq八周年,现在开放六位   qq   号码免费申请,数量有限,送完即止,加油吧
发表于:2007-07-23 11:28:4019楼 得分:0

程序中的   str   =   "from   user "   中的 "user "是   实体类

user.hbm.xml     中的   table= "user "   ,这个 "user "   才是数据库中实实在在的表
发表于:2007-07-23 11:32:5120楼 得分:0
我照下面改了
from   创建者.user   ...试试
如:from   dba.user
我的dba是yx   错误如下     看来不是那个问题呵呵
net.sf.hibernate.queryexception:   undefined   alias:   yx   [   from   yx.user   as   user   where   user.name=:stuname   and   user.password=:stupassword]
发表于:2007-07-23 11:33:3521楼 得分:0
yx.user   错误也一样
发表于:2007-07-23 11:47:5222楼 得分:0
麻烦   大家帮看看映射文件     是不是有问题?我总感觉user.hbm.xml不大对劲!
发表于:2007-07-23 11:50:5123楼 得分:30
user在oracle   中   为关键字不能使用!~
你用的什么数据库啊   ?
发表于:2007-07-23 11:51:2924楼 得分:0
哦   正是oracle
发表于:2007-07-23 11:52:1125楼 得分:0
"yx.user   "------------这样写肯定不对了,
在这,这个user是那个实体类,要写   也应该写在user.hbm.xml中,

<class   name= "ems.emsbean.hibernate.user "   table= "yx.user ">
-----------------
( "from   user ")查询所有的记录,这样写都出错,最大的可能就是   配置出问题了
条件查询的时候,要用到别名的,就是上面我说的那样
发表于:2007-07-23 11:54:3426楼 得分:0
换个表名就ok了
发表于:2007-07-23 12:11:0027楼 得分:0
呵呵   好象   正是这个问题  
不过问题又变成了caused   by:   java.sql.sqlexception:   ora-00904:   无效列名


看来我真是太菜了
发表于:2007-07-23 12:53:2928楼 得分:0
你比我强多拉啊

郁闷!

估计没主键
发表于:2007-07-23 15:05:1529楼 得分:0
列名无效-------还是把你的hql语句发上来吧


快速检索

最新资讯
热门点击