您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> SSH查询报错,service无法调用到dao~!

SSH查询报错,service无法调用到dao~!

来源:网络整理     时间:2016/6/26 12:31:34     关键词:

关于网友提出的“ SSH查询报错,service无法调用到dao~!”问题疑问,本网通过在网上对“ SSH查询报错,service无法调用到dao~!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: SSH查询报错,service无法调用到dao~!
描述:

sshjava框架SPRING

初建了个ssh框架,练习CRUD,save方法可以执行,但是增加查询方法就报错~!

beans.xml

 
    	
    
    


/>


UserAction.java

public String user_query(){
String username = user.getUsername(); queryUserList = userService.findUserByName(username);
return SUCCESS;
}
<> UserServiceImpl.java public List findUserByName(String username) {
List list = userDao.findUserByName(username);
return list; }
UserDaoImpl.java
<> public List findUserByName(String username) { String sql = "select * from User where username = " + username; List list = getHibernateTemplate().find(sql); return list; }

/> 我用debug方式跟踪的时候,比如页面传入一个username的值"ss",在UserAction里面可以取到,跟进UserService里面之后继续执行就直接进入class文件JdkDynamicAopProxy.class 的public Object invoke(Object proxy, Method method, Object[] args) throws Throwable 方法了,而没有进入UserDao的方法~!
页面报错: java.lang.reflect.InvocationTargetException sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
/> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 。。。。。。。。。。。 root cause  java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V<> org.hibernate.hql.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1391)
org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1106) org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296) org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159) org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:248)
/> org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157) org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111) org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77) org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56) org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72) org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
。。。。。。。
<> 求解
解决方案1:

既然整合就用hibernate用上就可以了、这样不容易出错、

解决方案2:

find(String queryString , Object value);

解决方案3:

你为什么要拼SQL呢,很容易出错还会SQL注入。 建议用:getHibernateTemplate().find(String queryString, Object...values)
动态传参赋值,简单方便又安全。


以上介绍了“ SSH查询报错,service无法调用到dao~!”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2083180.html

相关图片

相关文章