NHibernate HQL与isnull()在哪里不起作用

时间:2012-03-03 18:01:53

标签: c# nhibernate nhibernate-3

我使用NHibernate的HQL-Query:

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(这是一个字符串)转换为double。 z.Street和z.PostalCode是字符串字段,可以为null。看起来像NHibernate在where子句中的第一个isnull()有问题。当我使用z.Street+isnull(z.PostalCode,'')时,它正在工作。 我也尝试了cast(isnull(z.Street,'')+isnull(z.PostalCode,'') as string)但这也行不通,因为NHibernate对cast-function有一个问题(它生成了两个以上的参数)。 有人可以帮助我,我如何用NHibernate解决这个问题? - 也许有另一种方法可以写出where-condition?

我使用NHibernate 3.2

1 个答案:

答案 0 :(得分:3)

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