2011-3-9 11:49:39 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode 
 +-[IDENT] IdentNode: 'username' {originalText=username} at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:145)
at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:705)
at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:529)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:645)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:919)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:917)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:909)
at com.hit.cmd.userDao.UserDaoImpl.checkUser(UserDaoImpl.java:19)
at com.hit.cmd.web.action.CheckUserAction.execute(CheckUserAction.java:50)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
-------------------------------------------------------------------------------------------------------
package com.hit.cmd.userDao;import java.util.ArrayList;
import java.util.List;import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.hit.cmd.po.TUsers;
import com.hit.cmd.userVo.UserVo;
public class UserDaoImpl extends HibernateDaoSupport implements IUserDao{ @SuppressWarnings("unchecked")
public boolean checkUser(String username, String password) {
// TODO Auto-generated method stub
//我觉得这里有问题
List<UserVo> list = getHibernateTemplate().find("select username,password from TUsers");
UserVo t1 = list.get(0);
String userName = t1.getUserName();
if(username.equals(userName)){
return true;
}
return false;
}}
------------------------------------------------
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.hit.cmd.web.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 com.hit.cmd.userDao.IUserDao;
import com.hit.cmd.web.form.UserForm;/** 
 * MyEclipse Struts
 * Creation date: 03-07-2011
 * 
 * XDoclet definition:
 * @struts.action validate="true"
 */
public class CheckUserAction extends Action {
/*
 * Generated Methods
 */ /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
private IUserDao dao;

public void setDao(IUserDao dao) {
this.dao = dao;
} public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean result = dao.checkUser(username, password);

//dao.checkUser(username, password);
if(result == true){
response.getWriter().print("exist");
}else{
response.getWriter().print("notexist");
}
return null;
}
}

解决方案 »

  1.   

    第一次出现这种问题,会的帮看看什么问题 SSH登陆的一个简单的AJAX实现
      

  2.   

    配置文件中没有username这个属性把
      

  3.   

    hibernate配置文件中username的数据类型指定错误
       自己去看看
     学会看错误
      

  4.   

    List<UserVo> list = getHibernateTemplate().find("select username,password from TUsers");
    把这局话改了只查密码看看
    List<UserVo> list = getHibernateTemplate().find("select password from TUsers");
    看看是不是这局错了
      

  5.   

    自己检查一下Hibernate 配置文件的username的数据类型
    看看是不是名称写错了 注意大小写
      

  6.   

    java中区分大小写的吧
    你的hql中的是username
    实体类的是userName吧
    细心一点吧
      

  7.   

    select u.username,u.password from TUsers u
    hql不是sql,需要对象导航,改成这样就可以了