gpt4 book ai didi

NHibernate:HQL 和 UserTypes 作为查询参数

转载 作者:行者123 更新时间:2023-12-03 12:03:42 25 4
gpt4 key购买 nike

我正在使用具有奇怪日期格式的数据库。我写了一个 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>();

由于对shipment.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>();

一切正常,因为日期是使用用户类型为装运.ShipmentDate 翻译的。

我是否遗漏了一些暗示 HQL 该怎么做的东西?

最佳答案

我没有时间自己尝试,但尝试添加 SetParameter(IType)的第三个参数。
作为参数使用 NHUtils.Custom(typeof(YourIUserType))

关于NHibernate:HQL 和 UserTypes 作为查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/799457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com