4
我正在使用具有奇怪日期格式的數據庫。我寫了一個UserType來將標準的.NET DateTime轉換成怪異的格式,並且它工作正常。NHibernate:HQL和UserTypes作爲查詢參數
我通常使用ICriteria查詢,但決定在此項目上使用HQL嘗試IQuery。我遇到了一個問題,即查詢不會將參數轉換爲適當的UserType。
例如:
IQuery query = session.CreateQuery("from OfflineShipmentLineItem as line join fetch line.Shipment as shipment join fetch line.Extension where shipment.ShipmentDate = :date");
query.SetParameter("date", date);
return query.List<OfflineShipmentLineItem>();
上述打擊,因爲上shipment.ShipmentDate查詢最終被的「2009年4月28日12:00:00」代替用戶類型的格式。
如果我改用的ICriteria它工作正常:因爲日期使用shipment.ShipmentDate的用戶類型轉換
ICriteria criteria = session.CreateCriteria(typeof(OfflineShipmentLineItem));
criteria.SetFetchMode("Shipment", FetchMode.Eager);
criteria.SetFetchMode("Extension", FetchMode.Eager);
criteria.CreateAlias("Shipment", "shipment");
criteria.Add(Expression.Eq("shipment.ShipmentDate", date));
return criteria.List<OfflineShipmentLineItem>();
,一切工作正常。
我錯過了一些提示HQL該怎麼辦?
你真棒,工作!我不知道我是如何錯過的。我認爲必須有一種方法來幫助HQL弄清楚該怎麼做。 – anonymous 2009-04-30 12:05:49