3
我使用休耕HQL查询与NHibernate ISNULL():NHibernate的HQL与在不工作
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对cast函数有一个问题(它会产生两个以上的参数)。 有人可以帮助我,我怎么可以用NHibernate解决这个问题? - 也许有另一种方式来写出where条件?
我使用的NHibernate 3.2
此genereates休耕其中:(ISNULL(addresses3_.Street + '')+ ISNULL(addresses3_.PostalCode + '')),其抛出SQLException与消息ISNULL函数需要2个参数 – BennoDual 2012-03-05 19:44:06
尝试新版本。大多数方言都没有注册“isnull”; “coalesce”是标准。它可能工作时使用它自己的,因为NHibernate传递它。 – 2012-03-05 19:56:33
我现在试过这个,它会工作完美:-) – BennoDual 2012-03-05 19:58:07