Hibernate:如何选择最后N行在升序的id?(单个查询)



Hibernate版本:5.2

我试图使用子查询做,并使用setMaxResults(int)。

session.createQuery(
"FROM ( SELECT * FROM tickets ORDER BY id DESC limit 3) sub ORDER BY id ASC"
);

但是,HQL子查询只能在select或where子句中出现,而limit不能在hibernate中使用。

在hibernate中怎么做?


Update - To make clear

例如,从id=1到id=10有10个数据条目。

我想通过查询 + ,以升序选择id的最后3个数据,而不需要进一步的数据处理

从db得到的结果是id=8到id=10

谢谢。

假设您有110的id,并且您想要最后一个N=3

采取你的方法

SELECT * FROM tickets ORDER BY id DESC

将按照从101的顺序返回id。然后,您希望以升序获得最后一个N=3。这意味着您需要将id 31按升序排列。

按升序选择第一个N id会有什么问题?

session.createQuery(
    "FROM tickets ORDER BY id ASC"
).setMaxResults(n);

可以使用Query setFirstResult(int startPosition), Query setMaxResults(int maxResult)来实现。通常用于分页。

机会主义,你可以在这里得到前3条记录,所以你只能使用Query setMaxResults(int maxResult) .

最新更新