我需要使用状态文件= 10检索文件,并且空值从Oracle数据库中形成可为空的VARCHAR2列。
经过一番搜索,我发现了以下内容:
ICriteria criteria = NHibernateSession.CreateCriteria(persitentType);
criteria.Add(Expression.In("StatusFile", 10));
criteria.Add(Restrictions.IsEmpty("StatusFile"));
在SQL中将是这样的:
select attstatus from table where file_tmode = 'P'and (status is null or status = 10);
如果我删除了最后一行,那么它可以工作,但是我找不到能够为空值添加条件的方法。
我该怎么办?
最佳答案
您尝试过IsNull
吗?
NHibernateSession.CreateCriteria(persitentType)
.Add(Expression.In("StatusFile", 10))
.Add(Expression.IsNull("StatusFile"));
使用
or
NHibernateSession.CreateCriteria(persitentType)
.Add(Expression.In("StatusFile", 10)
|| Expression.IsNull("StatusFile"));
请注意,在oracle中(至少几年前,当我使用它时)没有为null编制索引,并且在大型表中查找null值可能非常慢。