任何人都可以幫我翻譯HQL以下SQL查詢用於獲取分頁結果嗎?HQL等價於SQL分頁查詢
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內存中進行分頁。 (Query.setMaxResults,Query.setFirstResult用於連接抓取HQL問題查詢警告:「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;
}
如果不知道類模型,就不能編寫HQL。 –
您應該將問題簡化爲您正在努力的部分(例如,子查詢中的rownum)。這個問題可能會被視爲「過於本地化」。無論如何,回答短問題的機會更大。不是每個人都有很多時間閱讀/理解冗長複雜的問題。 –
@StefanSteinegger我修改了SQL語句並添加了有關Java實體對象模型的信息。我認爲這個問題現在更具可讀性。 –