我使用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
答案 0 :(得分:3)
尝试concat(coalesce(z.Street,''), coalesce(z.PostalCode,''))