Вопрос

Я обнаружил, что функция PARSENAME является хорошим выбором для упорядочивания IP-адреса, хранящегося в базе данных. Здесь вот такой пример.
Моя проблема в том, что я использую Hibernate с именованными запросами в файле сопоставления xml, и я пытаюсь избежать использования

session.createSQLQuery(..) 

функция.
Мне интересно, существует ли какая-либо эквивалентная функция PARSENAME для запросов HQL.Я ищу это и ничего не могу найти.
Большое спасибо.

Это было полезно?

Решение

Я не нашел ничего связанного.
Наконец, я выполнил следующее предложение ORDER BY, чтобы упорядочить IP-адреса числовым способом (я нашел решение здесь):

order by cast(substring(host.ip, 1, locate('.', host.ip) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip) + 1, locate('.', host.ip, locate('.', host.ip) + 1) - locate('.', host.ip) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) - locate('.', host.ip, locate('.', host.ip) +  1) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) + 1, 3) as integer)    

Другие советы

Разделите свой диалект на подклассы и используйте RegisterFunction() чтобы сделать PARSENAME доступным для запросов HQL. RegisterFunction не очень хорошо документировано, но есть множество примеров в Интернете.Я не уверен, что вы можете использовать это, чтобы порядок однако результаты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top