我嘗試查找插入到表中的最後一個元素。hibernate查找表中最後一個元素的問題
我試圖把它寫這樣的:
m_query = m_session.createQuery("LAST(bankAccount) FROM AccountStatus");
需要的記錄的名稱的BankAccount和表的名稱是AccountStatus
我應該如何正確地寫呢?
感謝了很多,
P.S
這是一個Hibernate查詢
禮在關係模型
我嘗試查找插入到表中的最後一個元素。hibernate查找表中最後一個元素的問題
我試圖把它寫這樣的:
m_query = m_session.createQuery("LAST(bankAccount) FROM AccountStatus");
需要的記錄的名稱的BankAccount和表的名稱是AccountStatus
我應該如何正確地寫呢?
感謝了很多,
P.S
這是一個Hibernate查詢
禮在關係模型
「表」 已設置的語義。沒有「最後」元素,排序可以是任意的。您需要爲插入日期引入排序標準,如時間戳。有不同的可能的實現。您可以通過簡單的只讀(對於用戶而不是Hibernate!)字段在Java對象模型上執行此操作,該字段通過數據庫級別的觸發器或Hibernate生命週期偵聽器初始化爲當前時間。然後,您可以輕鬆獲取具有最新插入日期的實體。
如果你有你的表ID可以通過最大ID
m_query = m_session.createQuery("max(id) FROM AccountStatus");
這隻會返回AccountStatus表的最大ID。要返回LAST(bankAccount),您必須使用子查詢 – andih 2012-08-14 08:42:22
'm_query = m_session.createQuery(「a.bankAccount FROM AccountStatus a where a.id =(從AccountStatus中選擇max(id))」);'或' m_query = m_session.createQuery(「a.bankAccount FROM AccountStatus按a.id desc limit 1排序」);' – ssedano 2012-08-14 08:45:00
只有在確保id是連續的時纔有效。如果db爲事務保留並釋放id的塊(如MSSQL可以),它將不起作用。 – 2012-08-14 08:47:12
找到最後一個元素,如果存在在你的表的自動增量ID列,你也可以使用:
m_query = m_session.createQuery("a1.bankAccount FROM AccountStatus a1 where not exists (a2.bankAccount FROM AccountStatus a2 where a2.id>a1.id)");
怎麼辦你的意思是最後? – 2012-08-14 08:38:12
如果您的數據應記錄更改的歷史記錄,請考慮將Hibernate Envers這一捆綁在Hibernate中的模塊(自3.5或3.6開始)。這是在不同時間存儲數據並在特定時間查詢的方式。 – 2012-08-14 08:40:03