簡體   English   中英

Java Hibernate:更新MySql數據庫中的最新條目

[英]Java Hibernate : Update most recent entry in MySql database

這是我的要求。 我有一堆具有相似數據的行。 我想更新“最新”條目上的某些列。 所以我寫了一個像這樣的休眠查詢

String hql = "UPDATE Studenttable T set T.timestamp=:time,T.Action=:action where T.StudentId=:studentId and T.teacherId=:TeacherId order by T.teacher_student_mapping_id DESC";
Query query = session.createQuery(hql);
query.setParameter("time",time);
query.setParameter("studentId", studentId);
query.setParameter("TeacherId", teacherId);
query.setParameter("action", action);
query.setMaxResults(1);
query.executeUpdate();

這樣做是更新所有滿足條件的行,然后返回最新的行。 相反,我希望它獲取滿足條件的最新行,然后對其進行更新。 我該怎么做? 任何幫助深表感謝。

注意,teacher_student_mapping_id是自動生成的值,也是主鍵。

時間是當前時間。

請不要試圖弄清楚表,為了保密起見,我更改了列的名稱。

嘗試

字符串hql =“ UPDATE Studenttable T set T.timestamp =:time,T.Action =:action其中T.StudentId =:studentId和T.teacherId =:TeacherId按T.timestamp DESC LIMIT 1的順序排列;

由於標記了hql,您可以嘗試以下操作。 僅更新基於pk的最新版本。

UPDATE Studenttable T set T.timestamp=:time,T.Action=:action where T.StudentId=:studentId and T.teacherId=:TeacherId
and T.pk = (select max(tb.pk) from Studenttable tb where tb.StudentId=:studentId and tb.teacherId=:TeacherId )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM