Nhibernate不会在某个时候返回正确的结果

时间:2010-01-08 17:43:10

标签: sql database nhibernate

所以这是我的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;

1 个答案:

答案 0 :(得分:1)

您的子查询不会像实际查询那样按ID过滤 - 如果无论ID的最大时间恰好位于有问题ID的行上,您将获得所需的行;如果没有,你就不会。您需要在创建子查询的位置添加过滤器:

.Add( Expression.Eq("ID", ID) )