我将休闲 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