当前页面: 开发资料首页 → J2EE 专题 → hibernate 分页问题
hibernate 分页问题
摘要: hibernate 分页问题
我用的是MYSQL
MYSQL里面不是有这样的分页语句吗?
select * from table limit 8,15
我在hibernate 3 里面怎么构造出这个语句呢?
不好意思,分不多,见谅
顶一下先
我再顶,高手哪里去了
为什么要用native sql呢?这样你的程序移植性不就不够了吗?
考虑
Query q = session.createQuery("from table as t");
q.setFirstResult(8);
q.setMaxResults(7);
List l = q.list();
String hql = "select {u.*} from User as u limit 1,3";
Query query = session.createSQLQuery(hql).addEntity("u",User.class);
List list = query.list();
System.out.println(list.size());
Iterator it = query.list().iterator();
while(it.hasNext()){
User user = (User) it.next();
System.out.println(user.getUserName());
}
我的代码是这样写的
Iterator Result = session.createCriteria(C_T_News.class)
.addOrder(Order.desc("id"))
.setFirstResult(1)
.setMaxResults(8)
.list().iterator();
可最后用ANT编译测试的时候不能通过
它构造出来的SQL语句是这样的:
==================================================================
select limit ? ? this_.ID as ID0_0_, this_.SORT as SORT0_
0_, this_.ISONTOP as ISONTOP0_0_, this_.TITLE as TITLE0_0_, this_.CONTENT as CON
TENT0_0_, this_.AUTHOR as AUTHOR0_0_, this_.VIEWNUM as VIEWNUM0_0_, this_.ADD_DA
TE as ADD8_0_0_ from NEWS this_ order by this_.ID desc
==================================================================
我就搞不明白,limit 为什么会出现在 select 后面
按道理应该出现在 order by this_.ID desc 后面才对
我这里是哪里写错了?
里面有对应关系吗?比如一对多. 如果要在一方进行查询,并且要查询到多方的内容,最好用hql,用join关键字,然后就可以用
.setFirstResult(1)
.setMaxResults(8)
来控制分页了.
否则,需要手工来控制
回 djy1135(晨阳)
里面没有一对多的关系
就只是一个单表 NEWS
这是怎么回事呢
难道它不支持 MySql?
那ypchina(无崖子)回答的就是正确的!!!
郁闷。这个问题还是没有解决
Hibernate是支持MySQL的分页的,你可能在配置文件中的Dialect是错误的吧
晕死,刚无意中发现原来是我的配置文件没有设置好