所以这是我的nhibernate查询。 我只是在数据库中查询,如果有一些数字的最新条目,但有最新的时间戳。
所以,如果我有
Row A 6 1/7/2010 2:55:59 PM
Row B 6 1/7/2010 2:56:33 PM
所以根据查询它应该返回行B,但有时它不会发生。 任何人都可以在我的hibernate查询中指出问题。
DetachedCriteria subquery = DetachedCriteria.For(typeof(x));
subquery.SetProjection(Projections.Max("Time"));
X x = (X)_mapper.Run(delegate(ISession session, object[] arguments)
{
ICriteria criteria = session.CreateCriteria(typeof(X));
criteria.Add(Expression.Eq("ID", ID));
criteria.Add(Subqueries.PropertyEq("Time", subquery));
return criteria.UniqueResult();
}, true);
return x;
答案 0 :(得分:1)
您的子查询不会像实际查询那样按ID过滤 - 如果无论ID的最大时间恰好位于有问题ID的行上,您将获得所需的行;如果没有,你就不会。您需要在创建子查询的位置添加过滤器:
.Add( Expression.Eq("ID", ID) )