NHibernate HQL с isnull () там, где не работает - PullRequest
3 голосов
/ 03 марта 2012

Я использую следующий HQL-запрос с 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 (который является строкой) в double.z.Street и z.PostalCode являются строковыми полями, которые могут быть нулевыми.Похоже, что NHibernate имеет проблему с первым isnull () в предложении where.когда я использую z.Street+isnull(z.PostalCode,'') это работает.Я также попробовал cast(isnull(z.Street,'')+isnull(z.PostalCode,'') as string), но это также не работает, потому что у NHibernate есть проблема с функцией приведения (она генерирует более двух параметров).Может кто-нибудь помочь мне, как я могу решить эту проблему с NHibernate?- Возможно, есть другой способ написать условие where?

Я использую NHibernate 3.2

1 Ответ

3 голосов
/ 04 марта 2012

Попробуйте concat(coalesce(z.Street,''), coalesce(z.PostalCode,''))

...