根据插入时间从表中删除行

时间:2015-04-17 05:05:59

标签: hibernate hql

有没有办法,使用 Hibernate HQL 删除例如3个最旧的行,其中包含colomn类型 TIMESTAMP 并且插入行的时间?

1 个答案:

答案 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的字段(列)。它还假设每个时间戳都是唯一的,但情况可能并非如此。如果您的时间戳不能保证是唯一的,那么您可能希望使用主键删除。