3

我将休闲 HQL-Query 与 NHibernate 一起使用:

from Contact a where 
a.Id in (select x.Person.Id from PersonCompany x 
            inner join x.Company y 
            inner join y.Addresses z 
         where isnull(z.Street,'')+isnull(z.PostalCode,'')  Like :val) 

在这个查询中,NHibernate 尝试将 :val (它是一个字符串)转换为一个双精度。z.Street 和 z.PostalCode 是可以为空的字符串字段。看起来 NHibernate 的 where 子句中的第一个 isnull() 存在问题。当我使用z.Street+isnull(z.PostalCode,'')它时,它正在工作。我也尝试过cast(isnull(z.Street,'')+isnull(z.PostalCode,'') as string),但这也不起作用,因为 NHibernate 的转换函数有问题(它会生成两个以上的参数)。有人可以帮助我,我如何用 NHibernate 解决这个问题?- 也许还有另一种写 where 条件的方法?

我使用 NHibernate 3.2

4

1 回答 1

3

尝试concat(coalesce(z.Street,''), coalesce(z.PostalCode,''))

于 2012-03-04T00:52:50.340 回答