2010-11-18 26 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