我正在尝试运行一个Hibernate
查询,该查询返回除最后5行之外的所有行,因此我的sql查询如下:
session.createQuery("FROM Book
WHERE id NOT IN(SELECT id FROM Book ORDER BY ID DESC LIMIT 5)
ORDER BY title");
不幸的是,LIMIT
在Hibernate
中不允许,所以我收到一个错误:
我怎样才能解决这个问题?
我还提出了类似的问题,涉及hibernate中“LIMIT”关键字的限制。
Hibernate:如何按id的升序选择最后N行?(在单个查询中)
我认为只有两种方法,尽管这不是最好的表现。
希望有帮助
好像你在问Hibernate分页
首次获取计数:
String countQ = "Select count (f.id) from Foo f";
Query countQuery = session.createQuery(countQ);
Long countResults = (Long) countQuery.uniqueResult();
然后计算你的极限起点和终点:
Long start = countResult - limit;
然后使用分页未来:
Session session = sessionFactory.openSession();
Query query = sess.createQuery("From Foo");
query.setFirstResult(start );
query.setMaxResults(limit);
List<Foo> fooList = fooList = query.list();
你可能需要更新查询,但我相信你会明白的
这里有一个答案
如何在HQL中进行限制查询?
在HQL中,限制从来都不是受支持的子句。您应该使用setMax结果()。
问题内容: 我想在名为 id的 列( 主键)中 从MySQL数据库中选择最后50行。目标是行应该被分类 ID 在 ASC 秩序,这就是为什么这个查询不工作 同样值得注意的是,可以对行进行操作(删除),这就是为什么以下查询也不起作用的原因 问题 :如何从MySQL数据库中检索可以操纵并按ASC顺序排列的最后N行? 问题答案: 您可以使用子查询来做到这一点: 这将从中选择 最后 50行,然后按升序对其
问题内容: 我有一个带有索引(自动递增)和整数值的表。该表长百万行。 如何搜索某个数字是否最有效地出现在表的最后n行中? 问题答案: 从@chaos给出的答案开始,但进行了一些修改: 如果使用,则应始终使用。对于RDBMS表,没有保证的隐式顺序。 通常, 您可能 会 按主键的顺序获得行,但是您不能依靠它,也不是可移植的。 如果按降序排列,则无需事先知道表中的行数。 您必须为派生表指定一个 相关名称
我想从MySQL数据库中选择最后50行,列名为id,这是主键。目标是行应该按照ASC顺序按id排序,这就是为什么这个查询不起作用 同样值得注意的是,行可以被操纵(删除),这就是为什么下面的查询也不起作用 问题:如何从MySQL数据库中检索最后N行,这些行可以被操作并按ASC顺序排列?
我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。 我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。 下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。
问题内容: 如何使用CSS3选择器选择除最后一个子项之外的所有子项? 例如,只得到最后一个孩子第N个子项(1) 是的。。 问题答案: 您可以使用否定伪类:not()对:last-child伪类。正在被引入CSS选择器3级,它不适用于IE8或更低版本:
问题内容: 是否可以构建单个mysql查询(不带变量)以从表中删除所有记录,但最新的N(按ID desc排序)除外? 像这样的东西,只有它不起作用:) 谢谢。 问题答案: 您不能以这种方式删除记录,主要问题是您不能使用子查询来指定LIMIT子句的值。 这有效(在MySQL 5.0.67中测试): 中间子查询 是 必需的。没有它,我们将遇到两个错误: SQL错误(1093):您无法在FROM子句中指