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子句中,并且限制不能用于休眠。
我如何在休眠状态下执行此操作?
更新 - 明确
例如,从id = 1到id = 10有10个数据条目。
我想按ID的升序选择最后3个数据仅一个查询 + ,无需进一步处理数据。
db的结果是id = 8到id = 10
谢谢。
答案 0 :(得分:0)
假设您有1
到10
,并且您想要最后一个N=3
。
采取你的方法
SELECT * FROM tickets ORDER BY id DESC
会按照从10
到1
的顺序返回ID。然后,您希望以升序排列最后N=3
。这意味着您希望ID 3
升级为1
。
按升序选择第一个N
ID会出现什么问题?
session.createQuery(
"FROM tickets ORDER BY id ASC"
).setMaxResults(n);
答案 1 :(得分:0)
您可以使用Query setFirstResult(int startPosition)
,Query setMaxResults(int maxResult)
来实施它。通常用于分页。
机会主义,你可以在这里降序获得前3个记录,因此你只能使用Query setMaxResults(int maxResult)
。