0
我有这方面的工作。SQL查询:通过位置转换为了NHibernate的:(:较低(item.Name)name_lower)以HQL
select *
from table1 t
where t.Name like '%foo%'
order by position('foo' IN lower(t.name));
我需要将其转换为HQL。 使用此代码
var hql = string.Format("select item from {0} item where item.Name like :name order by position(:name_lower IN lower(item.Name))", dtoName);
var query = CurrentSession.CreateQuery(hql);
query.SetParameter("name", string.Format("{0}{1}{0}", "%", name));
query.SetParameter("name_lower", name.ToLower());
导致异常调用的createQuery时:
Antlr.Runtime.MismatchedTokenException
没有为了通过它工作正常。使用
order by item.Name
也工作正常。所以看起来问题在于位置功能。 我一直在寻找一个hql等价物但是找不到它。
任何帮助将不胜感激。
您可能需要创建自定义方言并注册位置功能。详情可以在这里找到:http://stackoverflow.com/questions/1845884/custom-sql-function-for-nhibernate-dialect – DanP 2014-09-10 12:45:55