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

Java 如何使用hibernate对数据库中的表列进行排序,java,mysql,hibernate,Java,Mysql,Hibernate,我想找到数据库中表列的10个接近我的值。 所以我想对该列的值进行排序,然后找到比我的值小或大的10个值。 我该怎么做 非常感谢您的帮助HQL支持订购人 要么你 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);

我想找到数据库中表列的10个接近我的值。 所以我想对该列的值进行排序,然后找到比我的值小或大的10个值。 我该怎么做
非常感谢您的帮助

HQL支持订购人

要么你

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 q=session.createQuery(“根据abs(值-:v)asc的表顺序”;
q、 setXxx(“v”,myValue);/*Xxx是浮点或长或整数或*/
q、 setMaxResults(10);
List l=q.List();

queryq1=session.createQuery(“从表中,值>=:v按值排序asc”;
q1.setXxx(“v”,myValue);/*Xxx是浮点或长或整数或*/
q1.setMaxResults(10);
列表l1=q1.List();
Query q2=session.createQuery(“从值<:v order by value desc的表中”;
q2.setXxx(“v”,myValue);/*Xxx是浮点或长或整数或*/
q2.setMaxResults(10);
List l2=q2.List();
/*现在在Java代码中找到10个最近的元素*/
...
而(…){
...
}

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

HQL支持
按顺序
排序

要么你

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 q=session.createQuery(“根据abs(值-:v)asc的表顺序”;
q、 setXxx(“v”,myValue);/*Xxx是浮点或长或整数或*/
q、 setMaxResults(10);
List l=q.List();

queryq1=session.createQuery(“从表中,值>=:v按值排序asc”;
q1.setXxx(“v”,myValue);/*Xxx是浮点或长或整数或*/
q1.setMaxResults(10);
列表l1=q1.List();
Query q2=session.createQuery(“从值<:v order by value desc的表中”;
q2.setXxx(“v”,myValue);/*Xxx是浮点或长或整数或*/
q2.setMaxResults(10);
List l2=q2.List();
/*现在在Java代码中找到10个最近的元素*/
...
而(…){
...
}
在第二个示例中,您会遇到两个选择的不便,这两个选择总共给您提供了20行,然后您必须在Java代码中找到最近的10行,但是如果在值列上有数据库索引,则可能会快得多。两个示例的结果都是相同的。

尝试以下操作:
getSession().createQuery(“从TableName t,其中t.SomeField<“+fieldvalue+”按SomeField asc排序”).setMaxResults(10.list();
尝试以下操作:
getSession().createQuery(“从TableName t,其中t.SomeField<“+fieldvalue+”按SomeField asc排序”).setMaxResults(10.list();