Эквивалент HQL 'parsename' - PullRequest
       11

Эквивалент HQL 'parsename'

0 голосов
/ 30 ноября 2009

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

session.createSQLQuery(..) 

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

Ответы [ 2 ]

1 голос
/ 02 декабря 2009

Я не нашел ничего связанного.
Наконец, я выполнил следующее предложение 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)    
0 голосов
/ 03 мая 2010

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

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