struts2+spring+hibernate分页源码jason

开发环境:   eclipse3.5   oracle11G    jkd: 1.6   tomcat6.0   struts2.1.6   spring2.5  hibernate3.2
看了http://www.blogjava.net/rongxh7 提供的struts2+spring+hibernate做的分页方案后写的一个完整的例子.
listMember.jsp 文件
Code
index.jsp 文件
Code
struts.xml 文件
Code
action文件  ListMember.java
Code
PageBean.java   bean类
Code
User.java  bean类   这里可存我显示的数据.
Code
User.hbm.xml   映射数据库的文件
Code
dao类  MemberDao.java
Code
dao的实现类  MemberDaoImpl.java
Code
service类 MemberService.java
Code
service的实现类   MemberServiceImpl.java
Code
spring的applicationContext.xml的配置文件
Code
sql脚本


代码中这里的ID是自动增长的。 
create table users
(
    id 
INTEGER,
    firstname 
varchar2(50),
    lastname 
varchar2(50),
    age 
INTEGER
)
到这里就已可以完整的看到结果了:
1 aa dd modify delete
2 23 12 modify delete
共13 条记录 共7 页 当前第1页
第一页 上一页 下一页 最后一页
========代码结束, 下面再来一点我做时的出的问题.==================
最后在这里我顺便说一下做时出现的一个问题:
在DaoImpl类中 分页方法中:
   query.setFirstResult(offset);
   query.setMaxResults(length);

以上分页的这两句代码我加了就会报错,不加则可全部显示出来。
根据提示是不能执行查询语句,可我觉得不加分页能全部显示,查询语句就应该没错。

报错提示:

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
	org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:615)
	org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
	org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
	org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
	com.pms.dao.impl.MemberDaoImpl.queryForPage(MemberDaoImpl.java:61)
===============源码=============================================
public List queryForPage(final String hql,final int offset,final int length){
     List list = getHibernateTemplate().executeFind(new HibernateCallback(){
         public Object doInHibernate(Session session) throws HibernateException,SQLException{
             Query query = session.createQuery(hql);
             query.setFirstResult(offset);
             query.setMaxResults(length);

             List list = query.list();
             return list;
         }
     });
     return list;
 }
========解决方法:=================

问题原因:

   在Spring 的applicationContext.xml文件中少了。

在Hibernate  session工厂中少了:

<!--采用Hibernate2.0的HSql解释器,解决了中文问题-->
             <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
             <!--打开Query Cache开关,需要Cache的query需要单独配置-->
             <prop key="hibernate.cache.use_query_cache">true</prop>
       <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>


posted @ 2009-09-25 16:48  wj-conquer  阅读(1190)  评论(1编辑  收藏  举报