如果數是一個字符串,那麼它會很容易:
.Add(Restrictions.Like("Number", "some_value",MatchMode.Anywhere))
既然你有一個數字,NHibernate的會檢查數的類型,如果你給它一個字符串,就會拋出例外。
不知道爲什麼NH隊並沒有提供對象作爲參數和MatchMode參數超載....
總之,你仍然可以做這樣的:
.Add(Expression.Sql("{alias}.Number like ?", "%2%", NHibernateUtil.String))
編輯
關於別名:
(我找不到在哪裏關於這個文件的談判,但這裏的併購它ÿ理解)
{別名}返回由NH爲最近個createCriteria內部使用的別名。所以,如果你有:
session.CreateCriteria<User>("firstAlias")
.CreateCriteria("firstAlias.Document", "doc")
.Add(Expression.Sql("{alias}.Number like ?", "%2%",
NHibernateUtil.String)).List<User>();
{別名}在這種情況下將'doc' - 所以你最終將:doc.Number。
所以,一定要使用{}別名其別名,你需要使用個createCriteria後。
非常好,謝謝。爲sql表達式上的別名...我用「this_.Number」是好的,我保證NHibernate將始終使用this_。? – 2009-08-05 17:35:54