这是我的要求。我有一堆包含类似数据的行。我想更新LATEST条目的一些列。所以我写了一个像这样的
的hibernate查询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();
这样做是为了更新满足条件的所有行,然后返回最新的行。相反,我希望它获取满足条件的最新行,然后更新它。我该怎么做?非常感谢任何帮助。
P.S。 teacher_student_mapping_id是自动生成的值,也是主键。
时间是当前时间。
请不要试图理解表格,我已经更改了列的名称以保密。
答案 0 :(得分:0)
试
String hql =" UPDATE Studenttable T set T.timestamp =:time,T.Action =:action其中T.StudentId =:studentId和T.teacherId =:TeacherId order by T.timestamp DESC限制1 ";
答案 1 :(得分:0)
自标记的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 )