报错如下: 头都大了,弄一天了,还是没弄好,请大家帮忙。。java.lang.RuntimeException: 
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 
member near line 1, column 14 [select count(member) from com.ouhn.wms.warehouse.vos.Member member]
com.ouhn.wms.warehouse.vos.MemberDAO.findSQL(MemberDAO.java:153)
com.ouhn.wms.warehouse.action.QueryAction.execute(QueryAction.java:128)相关代码如下 :
1.MemberDAO.Java:
public List findSQL(String sql, String countsql, int ipage)
                        throws HibernateException {
                Session session = HibernateSessionFactory.getSession();
                try {
                        // 提取記錄總數
                        Iterator results = session.createQuery(countsql).iterate();
                        while (results.hasNext()) {
                                rowCount = (Integer) results.next();
                        }2.QueryAction.Java:
 String sql ="from com.ouhn.wms.warehouse.vos.Member member";  
………………
Collection col = queryDAO.findSQL("select member "+sql,"select count(member) "+sql,ipage);
    request.setAttribute("Member", col);3.Member 为oracle 表 MEMBER 对应生成的类(对象),这里会不会有问题呢?是不是和某些关键字重复了??

解决方案 »

  1.   

    这个问题有个大体思路了,不过还是想听听大家的看法 。把 member 去掉 ,select count(member) 那这里是不是改为 count(Member) ,
    仍然会报同样的错。
      

  2.   

    select count(member) from com.ouhn.wms.warehouse.vos.Member member
    你要干什么,member如果是表的话,你能count一个表吗?sql语句就有错误。你要不count(*),要不就count表中一个字段都可以,没有count表的。
      

  3.   

    member 可以说类(对应一个表)的别名,当然可以 count 的啊 。这个问题我已经解决了,把member 改为其他的就OK了。麻烦帮我看看下面这个struts问题吧 ,解决了或对我的解答有帮助的朋友 我马上给分。
    1.JSP页面中(ListMember.jsp):
    <td><a href="QueryAction.do?action=update&search=search&expression=<bean:write name='Member' property='userid'/>"><bean:message key ="list.edit"/></a></td>2.QueryAction.java 
      String action=request.getParameter("action"); 
           String search=request.getParameter("search");  
           String expression=request.getParameter("expression"); 
     if(action==null)action="find";
                if(search==null)search="UNsearch";
                if(expression==null)expression="";
                expression=toChinese(expression);  
        
                if ("delete".equals(action)) {
                 Member delMember = new Member();
                 delMember.setId(java.lang.Long.valueOf(expression));
                 queryDAO.removeID(delMember);
                }
                
                if("update".equals(action))  {  
                 Member updateMember = new Member(); 
                 …………
                if("search".equals(search)){
         sql+=" where";
                 …………
    3.struts-config.xml 
      <action
          attribute="QueryForm"
          input="/query.jsp"
          name="QueryForm"
          path="/query"
          scope="request"
          type="com.wintech.wms.warehouse.action.QueryAction">
          <forward name="success" path="/listMember.jsp"/>
    我的页面流程是:query.jsp-query.do-listMember.jsp(显示查询结果,结果页面中有上面1所说的
    编辑、更新等连接,即<a href="QueryAction.do?action=update&search=search&expression=)现在的问题是 点击上面1中(listMember.jsp)的连接,即出现 :
    message :Invalid path /QueryAction was requested
    description :The requested resource (Invalid path /QueryAction was requested) is not available.似乎找不到QueryAction,不知道是不是要把listMember的路径也设进struts-config.xml 中呢?
    现在相当2个页面用一个QueryAction.do,但上面1中所说的只是一个连接,而query.jsp中有个form,已经加入 struts-config.xml 了。真是郁闷,找了半天还是没找到什么原因 ,请大家帮我看看 ??
      

  4.   

    <a href="query.do?action=update&search=search&expression=)
      

  5.   

    query.do ?
    根据这里 :
    <action
    attribute="QueryForm"
    input="/query.jsp"
    name="QueryForm"
    path="/query"
    scope="request"
    type="com.wintech.wms.warehouse.action.QueryAction">
    <forward name="success" path="/listMember.jsp"/>
    query.jsp 执行后转向 listMember.jsp ,在 listMember.jsp 有个编辑的连接,它直接指向 :
    QueryAction.do,调用这里面的
    这样应该没错吧 ??