分页的hql查询问题

huangrongxiaobao 2011-01-10 02:11:29
报错:
org.springframework.orm.hibernate3.HibernateQueryException: lbook is not mapped [select count(*) from lbook]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: lbook is not mapped [select count(*) from lbook]
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:639)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:377)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:832)
com.joyque.test.dao.impl.LbookDAOImpl.findPageByHQL(LbookDAOImpl.java:51)
com.joyque.test.service.impl.LbookServiceImpl.search(LbookServiceImpl.java:39)
com.joyque.test.action.LbookAction.findAllBook(LbookAction.java:52)
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:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)

我的代码:

/*
* HQL语句的分页查询
* (non-Javadoc)
* @see com.joyque.test.dao.LbookDAO#findPageByHQL(com.jouque.test.util.Page)
*/
@SuppressWarnings("unchecked")
public Page findPageByHQL(Page page) {
int currentPage=page.getCurrentPage();
int pageSize=page.getPageSize();
String hql="from lbook";
long a1=System.currentTimeMillis(); //获得的是自1970-1-01 00:00:00.000 到当前时刻的时间距离,类型为long
page.setAllRow((Integer)this.getHibernateTemplate().find("select count(*) from lbook").get(0));
long a2=System.currentTimeMillis();
System.out.print("this.getHibernateTemplate().find(hql).size()查询总记录数用的时间:"+(a2-a1));
page.setTotalPage(Page.countTotalPage(pageSize, page.getAllRow()));
Session session=(Session)this.getHibernateTemplate().getSessionFactory().getCurrentSession();
long a3=System.currentTimeMillis();
Query query= session.createQuery(hql);
int pagenum =(currentPage-1)*pageSize;
query.setFirstResult(pagenum);
query.setMaxResults(pageSize);
page.setQueryList(query.list());
long a4=System.currentTimeMillis();
System.out.println("query.list()用的时间:" + (a4-a3));
System.out.println("分页的时间:" + (a4-a1));
return page;
}


说那个hql语句错的:select count(*) from lbook"


求解!
...全文
275 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jayyunfei 2013-07-23
  • 打赏
  • 举报
回复
引用 4 楼 huangrongxiaobao 的回复:
[Quote=引用 3 楼 xiaoye2892 的回复:] 引用 2 楼 huangrongxiaobao 的回复: 引用 1 楼 inhibitory 的回复: "说那个hql语句错的:select count(*) from lbook" 你这个不是HQL,这个是SQL。 HQL需要像这么写:"from IBook", from后面跟的是类名,不是数据库中的表名 恩 改过了 出现了这个问题: javax.servlet.Ser…… [/Quote] 恩 但是为什吗写成: page.setAllRow((Long)this.getHibernateTemplate().find("select count(*) from lbook").get(0)); 还是错的 是不是allRow的类型要换成long的?
这里应该是获取的是整形,而你这里allrow是long型所以转换错误。
huangrongxiaobao 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiaoye2892 的回复:]

引用 2 楼 huangrongxiaobao 的回复:
引用 1 楼 inhibitory 的回复:

"说那个hql语句错的:select count(*) from lbook"
你这个不是HQL,这个是SQL。
HQL需要像这么写:"from IBook", from后面跟的是类名,不是数据库中的表名


恩 改过了 出现了这个问题:
javax.servlet.Ser……
[/Quote]

恩 但是为什吗写成:
page.setAllRow((Long)this.getHibernateTemplate().find("select count(*) from lbook").get(0));
还是错的 是不是allRow的类型要换成long的?
happyfmy 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huangrongxiaobao 的回复:]
引用 1 楼 inhibitory 的回复:

"说那个hql语句错的:select count(*) from lbook"
你这个不是HQL,这个是SQL。
HQL需要像这么写:"from IBook", from后面跟的是类名,不是数据库中的表名


恩 改过了 出现了这个问题:
javax.servlet.ServletException: java.lang.ClassC……
[/Quote]
类型转换错误 long不能转换为int 要强制转换
huangrongxiaobao 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 inhibitory 的回复:]

"说那个hql语句错的:select count(*) from lbook"
你这个不是HQL,这个是SQL。
HQL需要像这么写:"from IBook", from后面跟的是类名,不是数据库中的表名
[/Quote]

恩 改过了 出现了这个问题:
javax.servlet.ServletException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)

Inhibitory 2011-01-10
  • 打赏
  • 举报
回复
"说那个hql语句错的:select count(*) from lbook"
你这个不是HQL,这个是SQL。
HQL需要像这么写:"from IBook", from后面跟的是类名,不是数据库中的表名
Hibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docx

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧