1,出现问题的代码:
List rankList = bookDao.findRank();
2,调用的方法:
public List findRank()
{
String sql = "select top(10)* from bookInfo order by bookStar";
Query query = getSession().createQuery(sql);

List list = query.list(); 
return list; 
}
3,出现的异常:
javax.servlet.ServletException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: from near line 1, column 17 [select top(10)* from bookInfo order by bookStar]
4,求解?

解决方案 »

  1.   

    其中的SQL语句执行正常: select top(10)* from bookInfo order by bookStar
      

  2.   

     Query createQuery(String queryString) 
              Create a new instance of Query for the given HQL query string. 
     SQLQuery createSQLQuery(String queryString) 
              Create a new instance of SQLQuery for the given SQL query string. 
      

  3.   

    1,改用SQLQuery查询后,能够得到数据,但是这些数据在页面显示时出异常:
    Cannot convert [Ljava.lang.Object;@918c34 of type class [Ljava.lang.Object; to class book.dao.BookInfo An exception occurred processing JSP page /book/bookCatalog.jsp at line 92<c:forEach var="book" items="${requestScope.rankList}" varStatus="index" >
    92:  <div ><book:book_60 book="${book }"></book:book_60></div>
    93:  </c:forEach>2,而这页面标签是没有问题的,自己写的标签,之前测试通过,并能正常显示数据:
    <%@ attribute name="book" required="true" type="book.dao.BookInfo" %>
    <c:set var="id" value="${book.id }" scope="request"></c:set>
    <%
        String img="/jsp/book/pic/60/"+request.getAttribute("id")+".jpeg";
        request.setAttribute("img",img);
         %>
    <a href="/jsp/book.do?id=${book.id }"><img src="${img }"/></a>
    <a href="/jsp/book.do?id=${book.id }">${book.bookName }</a>
    <span class="bookPrice">$${book.bookPrice }</span>
    <span class="bookFavourable">$${book.bookFavourable }</span>
    3,还是有问题?
      

  4.   

    Query query = getSession().createSQLQuery(sql); 
      

  5.   

    你的实体类是叫这个吗bookInfo 
      

  6.   

    后来,我调试时发现,这个list中是有数据的,现在的问题是:
    为什么hibernate生成的dao.findAll()得到的list能够在面面以${bookInfo.bookName}显示,
    而我自己写的dao.findRand()得到的list却不行,
    只能以${bookInfo[0]}的方式显示?难道list中装的不是bookInfo对象?
      

  7.   

    可以换种方式来进行对数据库的操作。现在hibernate的 pojo 和 DAO 就有相应的方法进行对数据库的增删改查。稍微变化下就可以了。