HQL'parsename'等价

时间:2009-11-30 10:29:06

标签: sql nhibernate hql

我发现PARSENAME函数是订购存储在数据库中的IP地址的不错选择。 Here有一个例子 我的问题是我在xml映射文件中使用Hibernate和命名查询,我试图避免使用

session.createSQLQuery(..) 

功能。
我想知道是否存在任何用于HQL查询的PARSENAME等效函数。我正在寻找它,找不到任何东西 非常感谢。

2 个答案:

答案 0 :(得分:1)

我没有发现任何相关内容 最后,我执行了以下ORDER BY子句以数字方式排序IP地址(我找到了解决方案here):

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)    

答案 1 :(得分:0)

对您的方言进行子类化并使用RegisterFunction()使PARSENAME可用于HQL查询。 RegisterFunction没有很好的文档记录,但有plenty of examples on the web。我不确定你是否可以用它来订购结果。