有没有办法,使用 Hibernate HQL 删除例如3个最旧的行,其中包含colomn类型 TIMESTAMP 并且插入行的时间?
答案 0 :(得分:1)
首先,您可以创建查询以获取YourTable
表中最早的3条记录:
String hql1 = "select t.time from YourTable t order by t.time asc";
Query query1 = session.createQuery(hql1);
query1.setMaxResults(3);
List results = query1.list();
接下来,执行HQL查询以删除与这3个时间戳匹配的所有记录:
String hql2 = string.Format("delete from YourTable t WHERE t.time IN ({0})",
string.Join(",", results.ToArray()));
Query query2 = session.createQuery(hql2);
int result = query2.executeUpdate();
System.out.println("Number of row deleted: " + result);
此答案假设您的表类名为YourTable
,其中包含一个名为time
的字段(列)。它还假设每个时间戳都是唯一的,但情况可能并非如此。如果您的时间戳不能保证是唯一的,那么您可能希望使用主键删除。