Sql HQL';parsename';相等的

Sql HQL';parsename';相等的,sql,nhibernate,hql,Sql,Nhibernate,Hql,我发现PARSENAME函数是一个很好的选择,可以对存储在数据库中的IP地址进行排序。有一个例子。 我的问题是我在xml映射文件中使用Hibernate和命名查询,并且我试图避免使用 session.createSQLQuery(..) 功能。 我想知道是否存在用于HQL查询的PARSENAME等效函数。我正在搜索它,但什么也找不到。 非常感谢。我没有找到任何相关信息。 最后,我执行以下ORDERBY子句以数字方式对IP地址进行排序(我找到了解决方案): 子类化您的方言,并使用Registe

我发现PARSENAME函数是一个很好的选择,可以对存储在数据库中的IP地址进行排序。有一个例子。
我的问题是我在xml映射文件中使用Hibernate和命名查询,并且我试图避免使用

session.createSQLQuery(..) 
功能。
我想知道是否存在用于HQL查询的PARSENAME等效函数。我正在搜索它,但什么也找不到。

非常感谢。

我没有找到任何相关信息。
最后,我执行以下ORDERBY子句以数字方式对IP地址进行排序(我找到了解决方案):


子类化您的方言,并使用
RegisterFunction()
使PARSENAME可用于HQL查询
RegisterFunction
没有很好的文档记录,但有很多。我不确定你能不能用它来排序结果

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)