谁能帮我将以下用于获取分页结果的 SQL 查询转换为 HQL?
SELECT *
FROM REPORDER repairorde0x_
INNER JOIN REPREPAIRDEVICE repairdevi1x_
ON repairorde0x_.ID=repairdevi1x_.REPORDERID
WHERE repairorde0x_.ID IN
(SELECT id
FROM
(SELECT row_.id,
rownum rownum_
FROM
(SELECT DISTINCT repairorde0_.ID
FROM REPORDER repairorde0_
INNER JOIN REPREPAIRDEVICE repairdevi1_
ON repairorde0_.ID=repairdevi1_.REPORDERID
) row_
WHERE rownum <= 550
)
WHERE rownum_ > 500
) ;
我无法转换为 HQL 的部分是子选择,其中选择了要获取的维修订单的 ID。我不知道在这种情况下如何处理 rownum 和随后的几个子选择语句。
我需要 HQL 查询以便在数据库级别进行分页,而不是在 Java 的内存中进行。(对于 JOIN FETCH HQL 查询的 Query.setMaxResults、Query.setFirstResult 问题警告:“使用集合提取指定的 firstResult/maxResults;在内存中应用!”)
只是为了提示实体的 Java 模型:
class RepairOrder{
private int id;
private String orderNumber;
private List<RepairDevice> repairDevices;
}
class RepairDevice{
private int id;
private int repairOrderId;
private String deviceName;
}