我正在使用具有奇怪日期格式的数据库.我编写了一个UserType来将标准的.NET DateTime转换为奇怪的格式,并且工作正常.
我通常使用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>();
Run Code Online (Sandbox Code Playgroud)
以上情况爆发,因为对ship.ShipmentDate的查询最终为'4/28/2009 12:00:00',而不是UserType格式.
如果我改为使用ICriteria,它可以正常工作:
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>();
Run Code Online (Sandbox Code Playgroud)
一切正常,因为使用UserType forship.ShipmentDate翻译日期.
我错过了一些暗示HQL的内容吗?
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |