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にキャスト関数に問題があるため(2つ以上のパラメーターが生成されるため)、これも機能しません。誰かが私を助けてくれますか、NHibernateでこれをどのように解決できますか?-おそらく、where-conditionを記述する別の方法がありますか?

NHibernate3.2を使用しています

4

1 に答える 1

3

試すconcat(coalesce(z.Street,''), coalesce(z.PostalCode,''))

于 2012-03-04T00:52:50.340 に答える