问题描述
HTTPStatus500-typeExceptionreportmessagedescriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionjavax.servlet.ServletException:couldnotexecutequeryorg.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)rootcauseorg.hibernate.exception.SQLGrammarException:couldnotexecutequeryorg.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)org.hibernate.loader.Loader.doList(Loader.java:2223)org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)org.hibernate.loader.Loader.list(Loader.java:2099)org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)com.sz.login.impl.UserDaoImpl.query(UserDaoImpl.java:25)com.sz.login.serviceImpl.UserServiceImpl.query(UserServiceImpl.java:11)com.sz.login.acion.LoinAction.execute(LoinAction.java:43)Action代码:publicStringexecute()throwsException{System.out.println("LoinAction====>");UserServiceusersvc=ServiceFactory.getUserServiceInstance();if(usersvc.query(getName(),getPassword())){System.out.println("ccc");session.put("login","true");returnSUCCESS;}returnERROR;}帮忙看看!!!
解决方案
解决方案二:
if(usersvc.query(getName(),getPassword())){没看懂这行。。。。getName()跟getPassword()是怎么来的?感觉这行应该有问题。
解决方案三:
publicclassLoinActionextendsActionSupportimplementsSessionAware{privateintid;privateStringname;privateStringpassword;privateMapsession;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringexecute()throwsException{System.out.println("LoinAction====>");UserServiceusersvc=ServiceFactory.getUserServiceInstance();if(usersvc.query(getName(),getPassword())){System.out.println("ccc");session.put("login","true");returnSUCCESS;}returnERROR;}
解决方案四:
usersvc.query(getName(),getPassword())1、这个query方法里面拼接的hql又问题2、getName(),getPassword()有可能为空
解决方案五:
引用3楼dyllove98的回复:
usersvc.query(getName(),getPassword())1、这个query方法里面拼接的hql又问题2、getName(),getPassword()有可能为空
应该不是hql的问题,运行时控制台会打印出hql我也行是不是我的属性没值了publicbooleanquery(Stringname,Stringpassword)throwsException{booleanzhi=false;Sessionsession=HibernateUtil.getsession();session.beginTransaction();Stringhql="FromUserwherename=?andpassword=?";Queryquery=session.createQuery(hql);query.setString(0,name);query.setString(1,password);Listlist=query.list();Iteratori=list.iterator();System.out.println("iterator");if(i.hasNext()){zhi=true;}session.getTransaction().commit();session.close();returnzhi;}
解决方案六:
引用3楼dyllove98的回复:
usersvc.query(getName(),getPassword())1、这个query方法里面拼接的hql又问题2、getName(),getPassword()有可能为空
这就是控制台输入的:Hibernate:selectuser0_.idasid0_fromuseruser0_where=?and=?
解决方案七:
"这就是控制台输入的:Hibernate:selectuser0_.idasid0_fromuseruser0_where=?and=?"检查下你的实体User是否正确。 还有,此处无需事务
解决方案八:
引用6楼liujie616的回复:
"这就是控制台输入的:Hibernate:selectuser0_.idasid0_fromuseruser0_where=?and=?"检查下你的实体User是否正确。还有,此处无需事务
实体类publicclassUser{privateintid;privateStringname;privateStringpassword;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}是说我的实现类中不需要事物对吗?
解决方案九:
看不出有啥问题。。。 对,你的查询方法中不用加事务控制。
解决方案十:
查查看HibernateUtil连接是否是null