我在MySQL中有一個表,其中nnnn是一個數字,它有一個形式爲「Xnnnn」的字符串列'Id'。流利的NHibernate和MySQL轉換語法?
我想找到最大的nnnn定義。所以,我有:
var c = s.CreateCriteria(typeof(Item))
.AddOrder(Order.Desc(
Projections.Cast(
NHibernateUtil.Int32,
Projections.SqlFunction("substring", NHibernateUtil.String,
Projections.Property("Id"),
Projections.Constant(2), Projections.Constant(10)))
))
.SetProjection(Projections.Property("Id"))
.SetMaxResults(1)
.List<string>();
但NHibernate的生成SQL:
SELECT this_.Id as y0_ FROM `Item` this_
ORDER BY cast(substring(this_.Id, ?p0, ?p1) as INTEGER) desc limit ?p2
MySQL的哪個不喜歡...它堅持:
cast(substring(this_.Id, ?p0, ?p1) as SIGNED INTEGER)
我已經試過各種型號在演員陣容中,他們都沒有產生正確的輸出。我需要做的與映射工作一切正常。
有什麼建議嗎?
你在用什麼方言? – 2010-09-14 12:46:44
我沒有明確地配置一種方言,我使用的是流利的NHibernate,我假設它在那裏被處理。當我嘗試在配置中設置它時,有一個例外情況是該屬性已經設置。 – 2010-09-14 18:16:09