ssh分页查询报错,急啊,在线等。。。。。。

cyc123007512 2010-05-18 05:18:06
public List findByPage(final String hql,
final int offset, final int pageSize)
{
//通过一个HibernateCallback对象来执行查询
List list = getHibernateTemplate()
.executeFind(new HibernateCallback()
{
//实现HibernateCallback接口必须实现的方法
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
//执行Hibernate分页查询
List result = session.createQuery(" from Log")
.setFirstResult(1)
.setMaxResults(20)
.list();
return result;
}
});
return list;
}

怕传进来的参数有错,红色数字特意改的 报错如下:

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)
hibernateFactory.MySupportHibernate.findByPage(MySupportHibernate.java:32)
com.zoye.oa.tool.MemberServiceImpl.queryForPage(MemberServiceImpl.java:30)
com.zoye.oa.action.LogAction.findAll(LogAction.java:60)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)


...全文
355 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
小圈圈 2011-01-28
  • 打赏
  • 举报
回复
我竟然遇到的问题和楼主一模一样。。。。
数据库是HSQLDialect,
cyc123007512 2010-05-20
  • 打赏
  • 举报
回复
是我的数据库方言配置错了。谢谢你
谢谢各位的关注
[Quote=引用 24 楼 dragon45 的回复:]
引用 18 楼 cyc123007512 的回复:
确定你的是mysql数据库?
按照你的输出你配置的方言应该是mysql,但是如果你的数据库不是mysql是oracle,那肯定就有问题了。[/Quote]
injuer 2010-05-20
  • 打赏
  • 举报
回复
请楼主确认,数据库中拥有相关的表对象或正确的列............
dragon45 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 cyc123007512 的回复:]
搞不定了,大家来帮忙啊

没有
query.setFirstResult(1);
query.setMaxResults(20);
可以欲行,打印出来的
select
log0_.lsn as lsn5_,
log0_.loperator as loperator5_,
log0_.ldescribe as ldescribe5_,
log0_.lsql as……
[/Quote]


确定你的是mysql数据库?
按照你的输出你配置的方言应该是mysql,但是如果你的数据库不是mysql是oracle,那肯定就有问题了。

简言之:问题应该是配置的数据库方言跟实际使用的数据库不一致。

可以看看这篇文章http://www.javaeye.com/topic/261
lvchao7758520 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 cyc123007512 的回复:]
别关注啊。帮忙

引用 21 楼 lvchao7758520 的回复:
很怪异 关注。
[/Quote]

..我也没见过这种怪异的情况啊。。。。学习吧。。
lvchao7758520 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 cyc123007512 的回复:]
是的。不同的数据要配置不一样的。
哎,这个问题折腾了好久。郁闷。

引用 27 楼 lvchao7758520 的回复:
.......数据库方言....
[/Quote]
= =没想过你配置的错误..
  • 打赏
  • 举报
回复
顶一下
cyc123007512 2010-05-20
  • 打赏
  • 举报
回复
是的。不同的数据要配置不一样的。
哎,这个问题折腾了好久。郁闷。
[Quote=引用 27 楼 lvchao7758520 的回复:]
.......数据库方言....
[/Quote]
lvchao7758520 2010-05-20
  • 打赏
  • 举报
回复
.......数据库方言....
cyc123007512 2010-05-19
  • 打赏
  • 举报
回复
大家帮忙看看,到底是哪里写的有问题
Xaction.java
public String findAll(){
this.pageBean = memberService.queryForPage(30, page);
return "loginfo";
}

Xserver.java
public PageBean queryForPage(int pageSize,int page){
final String hql = " from Log order by ltime desc";//查询语句
int allRow = getAllRowCount(hql);//总记录数
int totalPage = PageBean.countTotalPage(pageSize, allRow);//总页数
final int offset = PageBean.countOffset(pageSize, page);//当前页开始记录
final int length = pageSize;//每页记录数
final int currentPage = PageBean.countCurrentPage(page);
List<Log> list =findByPage(hql,offset, length);//"一页"的记录   
//把分页信息保存到Bean中
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
}

Xhibernate.java
public List findByPage(final String hql,
final int offset, final int pageSize){
//通过一个HibernateCallback对象来执行查询
List list = getHibernateTemplate()
.executeFind(new HibernateCallback()
{
//实现HibernateCallback接口必须实现的方法
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
//执行Hibernate分页查询
Query query=session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(pageSize);
List result=query.list();
return result;
}
});
return list;
}

cyc123007512 2010-05-19
  • 打赏
  • 举报
回复
别关注啊。帮忙
[Quote=引用 21 楼 lvchao7758520 的回复:]
很怪异 关注。
[/Quote]
lvchao7758520 2010-05-19
  • 打赏
  • 举报
回复
很怪异 关注。
cyc123007512 2010-05-19
  • 打赏
  • 举报
回复
Query query=session.createQuery("from Log");
//query.setFirstResult(1);
//query.setMaxResults(20);

result=query.list();

加上注释就查出来了,但是不能分页
xuhesheng 2010-05-19
  • 打赏
  • 举报
回复
打印下hql或者sql语句看看,是不是哪里弄错了
cyc123007512 2010-05-19
  • 打赏
  • 举报
回复
hql = " from Log order by ltime desc limit ?,?"
query.setParameter(0, 1);
query.setParameter(1, 30);

org.springframework.orm.hibernate3.HibernateSystemException: ordinal parameter mismatch; nested exception is org.hibernate.HibernateException: ordinal parameter mismatch
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:661)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:917)


[Quote=引用 19 楼 lvchao7758520 的回复:]
select
log0_.lsn as lsn5_,
log0_.loperator as loperator5_,
log0_.ldescribe as ldescribe5_,
log0_.lsql as lsql5_,
log0_.ltime as ltime5_
from
zoyeoa.dbo.log log0_
order by
……
[/Quote]
lvchao7758520 2010-05-19
  • 打赏
  • 举报
回复
select
log0_.lsn as lsn5_,
log0_.loperator as loperator5_,
log0_.ldescribe as ldescribe5_,
log0_.lsql as lsql5_,
log0_.ltime as ltime5_
from
zoyeoa.dbo.log log0_
order by
log0_.ltime desc limit ?

用的MySQL?
你试下 用hql = from Log order by ltime desc limit ?,?
query.setParameter(0, 起始行数),query.setParameter(1,查询行数),
看这样能不能出来
cyc123007512 2010-05-19
  • 打赏
  • 举报
回复
搞不定了,大家来帮忙啊

没有
query.setFirstResult(1);
query.setMaxResults(20);
可以欲行,打印出来的
select
log0_.lsn as lsn5_,
log0_.loperator as loperator5_,
log0_.ldescribe as ldescribe5_,
log0_.lsql as lsql5_,
log0_.ltime as ltime5_
from
zoyeoa.dbo.log log0_
order by
log0_.ltime desc

query.setFirstResult(1);
query.setMaxResults(20);
不能运行,打印出:
select
log0_.lsn as lsn5_,
log0_.loperator as loperator5_,
log0_.ldescribe as ldescribe5_,
log0_.lsql as lsql5_,
log0_.ltime as ltime5_
from
zoyeoa.dbo.log log0_
order by
log0_.ltime desc limit ?
cyc123007512 2010-05-18
  • 打赏
  • 举报
回复
当然。没分页的时候全部查询出来了
[Quote=引用 6 楼 arthur0088 的回复:]
List result = session.createQuery(" from Log")
首先确定你有Log这个类,而不是表
[/Quote]

[Quote=引用 6 楼 arthur0088 的回复:]
List result = session.createQuery(" from Log")
sql语句正确?
[/Quote]
cyc123007512 2010-05-18
  • 打赏
  • 举报
回复
确定!
[Quote=引用 6 楼 arthur0088 的回复:]
List result = session.createQuery(" from Log")
首先确定你有Log这个类,而不是表
[/Quote]
zhou961270 2010-05-18
  • 打赏
  • 举报
回复
异常问题,是说hql异常,不能执行,你看看你那hql真写对了
加载更多回复(11)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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