【发布时间】:2008-11-16 03:24:27
【问题描述】:
我一直在所有当前的 .NET 3.5 SP1 项目中使用NHibernate 2.0.1.4000,并且在使用任何其他查询(使用查询或条件 API)时都没有遇到任何问题,直到一些新的业务逻辑决定了新查询的必要性在这个针对应用程序数据库的特定项目中,该数据库需要从单个表中检索具有特定空属性(DateTime 类型)的记录。
知道您不能对此类查询使用不等于限制,而是可以使用 IsNull 限制,这个简单的查询会生成“值不能为空!”执行时异常。我有大量的 DEBUG 模式 log4net 日志文件,我已经查看过但还没有帮助,并且我已经验证我的表类确实指定了我正在检查的属性是一个可为空的属性(DateTime?)以避免强制更新记录等可能导致的问题,这里没有发生......
这是查询,没什么复杂的,我已经尝试使用/不使用 MaxResults 附加限制来消除它作为一个问题,但是,每次在我收集结果之前都会抛出异常:
ICriteria criteria = session.GetISession().CreateCriteria(typeof (Order)).Add(NHibernate.Criterion.Restrictions.IsNull("ShippedOn")).SetMaxResults(10);
IList<Order> entityList = criteria.List<Order>();
有任何想法或指向更多信息可以帮助我解决这个问题吗?我也尝试过使用 HQL,同样的问题......我在这里是否遗漏了一些关于返回具有特定 null 属性的记录的内容?
【问题讨论】:
标签: nhibernate exception criteria