3

我正在尝试从表中获取最大值,执行如下操作:

        SELECT max(re.Sequence) FROM MyTable re WHERE re.ItemId = :itemId

所以我可以为每个 itemId 获得列序列的最大值。

尝试使用 createQuery 但没有奏效:

        string hql = @"SELECT new Int32(max(re.Sequence) FROM MyTable re WHERE re.Item.Id = :itemId";
        List<Int32> lista =  session
            .CreateQuery(hql)
            .SetParameter("itemId", idItem)
            .List<Int32>()
            .ToList();

任何帮助将不胜感激。

最好的祝福。

4

1 回答 1

12

使用条件语法:

var criteria = session.CreateCriteria<MyTable>();
criteria.Add(Restrictions.Eq("ItemId", itemId));
criteria.SetProjection(Projections.Max("Sequence"));
var max = criteria.UniqueResult<int>();

使用查询语法:

var max = session.QueryOver<MyTable>().Where(x => x.ItemId.Equals(itemId)).Select(
                Projections.Max<MyTable>(x => x.Sequence)).SingleOrDefault<int>();
于 2013-04-03T16:58:15.830 回答