Hibernate - внедрение функций MySql - PullRequest
1 голос
/ 18 ноября 2010

Возможно с помощью Hibernate (предпочтительно API Criteria) использовать функцию mySql для упорядочения по.

Функция, которую я ищу, это: -

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

, где{alias} имеет корень в

criteria.createCriteria("location.address"); 

Все, что я хочу сделать, - это упорядочить результаты по приведенному выше уравнению расстояния, но до сих пор я не нашел способа с использованием опций Проекции или Порядка.вариантов и у меня заканчиваются идеи.

Ура, R

1 Ответ

1 голос
/ 18 ноября 2010

Это не совсем отвечает на ваш вопрос, но то, что вы получаете из Criteria API, это куча хороших объектов, которые придерживаются своих интерфейсов. Задумывались ли вы о том, чтобы снять порядок запроса и вместо этого отсортировать их в памяти? Должно быть легко выразить эту функцию упорядочения в терминах Comparator, и тогда вы можете просто отсортировать коллекцию.

Я не знаю, как выразить это в функции .addOrder Criteria API. Вы можете добавить произвольный SQL к Ограничениям, но похоже, что вы не можете упорядочить по произвольному SQL.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...