2010-11-18 35 views
1

可以使用Hibernate(最好是Criteria API)使用mySql函数来排序。Hibernate - 注入MySql函数

我期待使用的功能是: -

SQRT(POW(69.1 * ({alias}.latitude - 51.3814282) , 2) + POW(69.1 * ( -2.3574537 - {alias}.longitude) * COS({alias}.latitude/57.3) , 2)) 

其中{化名}在

criteria.createCriteria("location.address"); 

扎根所有我希望做的是有由上述有序结果距离方程,但到目前为止,我还没有找到使用投影选项或订单的方法。选项和用尽想法。

干杯, [R

回答

1

这并不完全回答你的问题,但你走出标准的API什么是一堆粘附于其界面不错的对象。你有没有想过从查询中提取订单,而是将它们排序在内存中?应该很容易用比较器来表示该排序功能,然后您可以对Collection进行排序。

我不知道如何在Criteria API的.addOrder函数中表达它。您可以将任意SQL添加到限制,但看起来您无法通过任意SQL进行排序。

祝你好运。

+0

干杯蒂姆,这不是我正在寻找的,但它确实做的工作。随着数据集的增长,我对性能稍微担忧,但现在它可以很好地在内存中排序:) – Rob 2010-11-23 17:50:24