如何使用hibernate对数据库中的表的列进行排序

时间:2012-11-11 07:50:56

标签: java mysql hibernate

我想在数据库中找到一个表的列的10个nearset值到我的值。 所以我想对该列的值进行排序,然后找到比我的值小10或更大的值。 我怎样才能做到这一点 非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

HQL支持ORDER BY

要么你做

Query q = session.createQuery("from Table order by abs(value - :v) asc";
q.setXxx("v", myValue);         /* Xxx is Float or Long or Integer or... */
q.setMaxResults(10);
List<Table> l = q.list();

Query q1 = session.createQuery("from Table where value >= :v order by value asc";
q1.setXxx("v", myValue);         /* Xxx is Float or Long or Integer or... */
q1.setMaxResults(10);
List<Table> l1 = q1.list();
Query q2 = session.createQuery("from Table where value < :v order by value desc";
q2.setXxx("v", myValue);         /* Xxx is Float or Long or Integer or... */
q2.setMaxResults(10);
List<Table> l2 = q2.list();
/* now find the 10 nearest elements in Java code */
...
while (...) {
   ...
}

在第二个例子中,你有两个选择的不便,它们总共给你20行,然后你必须在Java代码中找到最近的10个,但如果值列上有数据库索引,它可能会快得多。两个例子的结果都是一样的。