[英]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.