这是topic的实体类字段         private Long tid;
private String tcontent;
private String thard;
private String tdate;
private String tre;
private String tstate;
private String tpoint;

private QuesType quesType;
private Answer aw;
private Exam exam;首先是basedaoimpl类里面的getList方法
public List<T> getList(String hql, Object[] params, int pageSize,int pageNum) {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Query query = session.createQuery(hql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
query.setFirstResult(pageSize*(pageNum-1)).setMaxResults(pageSize);
return query.list();
}然后是daoimpl里的方法 继承basedaoimpl
public List<Topic> getTopics(int eid, int qid, int pageSize,int pageNum ) {
String hql="from Topic where exam.eid like ? and quesType.qid like ?";
List<Topic> topics=getList(hql, new Integer[]{eid,qid}, pageSize, pageNum);
return topics;
}再是bizimpl
public List<Topic> getTopics(int eid, int qid, int pageSize, int pageNum) {
return topicDAO.getTopics(eid, qid, pageSize, pageNum);
}
再是action里的方法
public String getTopics(){
List<Topic> topicsList=topicBiz.getTopics(topic.getExam().getEid(), topic.getQuesType(). getQid(), pageSize, pageNum);
int totalCount=topicBiz.getTopicCount(topic.getExam().getEid(), topic.getQuesType().getQid());
totalPage=PageUtil.getPageTotal(totalCount, pageSize);
HibernateSessionUtil.setAttribute("topicsList", topicsList);
HibernateSessionUtil.setAttribute("totalCount", totalCount);
HibernateSessionUtil.setAttribute("pageSize", pageSize);
HibernateSessionUtil.setAttribute("totalPage", totalPage);
return "topics";
}我用断点测试的时候 发现一直到daoimpl中return的topics的值 都是对的 但是到了bizimpl的时候 有这么一句话Source not found for $Proxy10.getTopics(int, int, int, int) line: not available 继续到action里面 
得出的 topicList值也是对的 但是继续下去就报错了  
错误如下:
org.springframework.orm.hibernate3.HibernateQueryException: Expected positional parameter count: 2, actual parameters: [] [from Topic where exam.eid like ? and quesType.qid like ? ]; nested exception is org.hibernate.QueryException: Expected positional parameter count: 2, actual parameters: [] [from Topic where exam.eid like ? and quesType.qid like ? ]
这是页面包的错误 不是tomcat报的错 好像是说占位符的问题 我想知道 我是不是basedaoimpl里面的getlist方法写的不对 还是什么 求各位帮忙看下 谢谢了 本人菜鸟 刚学不久 

解决方案 »

  1.   

    好像是HQL语句的参数个数与你执行查询时传入的参数不匹配,
    把异常信息贴全了,你的debug描述不太清楚
      

  2.   

    你测试的时候,给那几个参数赋值了吗没赋值自然是not available 了
      

  3.   

    for (int i = 0; i < params.length; i++)
    估计就是这一块的问题了 
    你改成for (int i = 1; i <= params.length; i++)试试
      

  4.   

    测试时 参数都有值 而且我看了 也都是对的 我觉得会不会是getlist(String hql, Object[] params, int pageSize,int pageNum)和我的getTopics(int eid, int qid, int pageSize,int pageNum )
    这里面的getList(hql, new Integer[]{eid,qid}, pageSize, pageNum);这个的问题这是全部的异常
    org.springframework.orm.hibernate3.HibernateQueryException: Expected positional parameter count: 2, actual parameters: [] [from Topic where exam.eid like ? and quesType.qid like ? ]; nested exception is org.hibernate.QueryException: Expected positional parameter count: 2, actual parameters: [] [from Topic where exam.eid like ? and quesType.qid like ? ]
    org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:649)
    org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:408)
    org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367)
    org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:830)
    org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:822)
    cn.njsuccess.train.dao.impl.TopicDAOImpl.getTopicCount(TopicDAOImpl.java:68)
    cn.njsuccess.train.biz.impl.TopicBizImpl.getTopicCount(TopicBizImpl.java:62)
    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)
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
    $Proxy10.getTopicCount(Unknown Source)
    cn.njsuccess.train.actions.TopicAction.getTopics(TopicAction.java:53)
    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:440)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)