我在建立标准对象方面遇到了一些问题。通常情况下,我构建的Cruteria与此类似:
ISession session = GetSession();
ICriteria criteria = session.CreateCriteria(typeof(MyObject))
.Add(Expression.Gt("StartDate", DateTime.Now.ToUniversalTime()))
.Add(Expression.Eq("SubObject.SubObjectId", subObjectId))
.AddOrder(new Order("StartDate", true));
我需要做的是创建一个看起来更像这样的标准:
其中((a.enddate不为空且
a.enddate>='现在')或a.enddate是
和((a.SubObject不为空)
和a.SubObject.SubObjectId='id'125;')
或a.SubObject为空)和
a.开始日期<='现在'
是的,我知道我可以使用hql,但是如果可能的话,我想用critera代替。
子对象和结束日期可以为空,如果它们为空,我希望在选择中包含它们,但是如果它们不为空,我需要将它们与值进行比较。如果子对象不为空,则为其ID;如果结束日期不为空,则为当前时间。
我知道我需要一个“或”的分离,但我只是不确定他们的位置和顺序,就标准而言。