HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage 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:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause org.hibernate.exception.SQLGrammarException: could not execute query
org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:1596)
org.hibernate.loader.Loader.list(Loader.java:1577)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
cn.gov.dangshan.hibernate.DbOperate.getLoginUser(DbOperate.java:26)
cn.gov.dangshan.struts.action.LoginAction.execute(LoginAction.java:49)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.19代码:
/**
 * 数据库操作
 */
package cn.gov.dangshan.hibernate;
import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;import cn.gov.dangshan.struts.form.LoginForm;/**
 * @author sr
 *
 */
public class DbOperate {
public LoginForm getLoginUser(String user00) throws HibernateException{
Session session = SessionFactory.currentSession();
LoginForm loginuser = null;
Transaction tx = null;
try{
tx = session.beginTransaction();
Query query = session.createQuery("from User00 where user00 =" + user00);
List list = query.list();
if(!list.isEmpty())
loginuser = (LoginForm)list.get(0);
tx.commit();
}catch(HibernateException e){
if(tx != null){
tx.rollback();
}
throw e;
}
session.close();
return loginuser;
}}

解决方案 »

  1.   

    把hibernate配置文件中的show_sql开关打开,看控制台打印的sql语句是什么SQLGrammarException,可能是sql语法有问题
      

  2.   

    user00是什么类型的?如果是String型的话应该改为
    "from User00 where user00='"+user00+"'"
      

  3.   

    Query query = session.createQuery("from User00 where user00=?");
    query.setParameter(0, user00);
      

  4.   

    谢谢刚刚那个解决了,我经常会碰到以下问题,如果遇到,请问怎么样解决,谢谢了,大虾,衷心的感谢!
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    root cause java.lang.ClassCastException
    cn.gov.dangshan.hibernate.DbOperate.getLoginUser(DbOperate.java:28)
    cn.gov.dangshan.struts.action.LoginAction.execute(LoginAction.java:49)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    note The full stack trace of the root cause is available in the Tomcat logs.
    --------------------------------------------------------------------------------
      

  5.   

    调用的代码是:
    //Created by MyEclipse Struts
    // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.0.1/xslt/JavaClass.xslpackage cn.gov.dangshan.struts.action;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessages;import cn.gov.dangshan.hibernate.DbOperate;
    import cn.gov.dangshan.struts.form.LoginForm;/** 
     * MyEclipse Struts
     * Creation date: 08-23-2006
     * 
     * XDoclet definition:
     * @struts.action path="/login" name="loginForm" input="/myweb/wrong.jsp" scope="request" validate="true"
     */
    public class LoginAction extends Action { // --------------------------------------------------------- Instance Variables // --------------------------------------------------------- Methods /** 
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) {
    LoginForm loginForm = (LoginForm) form;
    String user00 = (String)loginForm.getUsername();
    String psword = (String)loginForm.getPassword();

    LoginForm loginuser = new DbOperate().getLoginUser(user00);
    ActionMessages errors = new ActionMessages();

    if(loginuser==null)
    {
    return mapping.findForward("toWrong");
    }
    else{
    String loginPassword = loginuser.getPassword();
    if(loginPassword==null||!loginPassword.equals(psword)){
    return mapping.findForward("toWrong");
    }
    else{
    //HttpSession session = request.getSession();
    //session.setAttribute("username",loginuser);
    return mapping.findForward("toIndex");
    }
    }

    }}
      

  6.   

    cn.gov.dangshan.struts.action.LoginAction.execute(LoginAction.java:49)
    =========================================================================
    很明显的错误嘛,要学会看控制台信息啊
    ClassCaseException 就是说你把某个对象在转型的时候转为了与其不匹配的类型了,行数也告诉你了