在我的Java Web應用程序中我使用PostgreSQL和一些數據表都是在服務器自動填充。在數據庫中,我有一個狀態表,如下圖所示:轉換PostgreSQL的查詢到Hibernate
我想選擇與所選擇的日期,並在車輛仍保持連接狀態之間的車輛數據。簡單地說,我想要選擇上表中綠色的數據,這意味着我首先需要io1 = true時的數據,以及最後一次io1 = true時io1 = false時的數據。我有postgresql查詢語句,這正好給我所需的數據;但是,由於我的應用程序邏輯,我必須將其轉換爲HQL。
工作,PostgreSQL的查詢:
WITH cte AS
(SELECT iostatusid, mtstrackid, io1,io2,io3, gpsdate,
(io1 <> LAG(io1) OVER (PARTITION BY mtstrackid
ORDER BY gpsdate)
) AS status_changed
FROM iostatus
WHERE mtstrackid = 'redcar' AND gpsdate between '2014-02-28 00:00:00' and '2014-02-28 23:59:59'
)
SELECT iostatusId, mtstrackid, io1, io2, io3,gpsdate
FROM cte
WHERE status_changed
OR io1 AND status_changed IS NULL
ORDER BY gpsdate ;
應該如何我上面的查詢轉換爲HQL或我怎麼能檢索與HQL所需的數據?
你可以使用本機查詢只需要調用數據庫。然後你可以使用上面的代碼。我懷疑這裏的任何人會用HQL來翻譯這個,如果你提供了足夠的信息,這也是令人懷疑的。 – Magnilex
'ClassCastException'。 –
我不認爲HQL支持公用表表達式甚至窗口函數。它只支持最基本的SQL語句。 –