問題があります。リストexternalIdsにあるIDを持つ人のデータベースレコードから選択する必要があります。その後、すべての人に最新の StartTime を持つレコードを 1 つだけ選択する必要があります。たとえば、SetProjection (GroupProperty および Max プロパティ) を試してみましたが、その結果、PersonnelPresence のリストが必要なときに StartTime のリストのみが返されます。私の方法は次のようになります:
public IList<PersonnelPresence> GetLastPersonnelPresencesForPeopleExternalIds(IList<string> externalIds)
{
ICriteria criteria = Session.CreateCriteria(typeof(PersonnelPresence), "pp").CreateCriteria("pp.Person", "p")
.Add(Restrictions.In("p.ExternalId", externalIds.ToList()))
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty("p.Id"))
.Add(Projections.Max("pp.StartTime")));
return criteria.List<Object>() as List<PersonnelPresence>;
}
私の問題を解決する方法を知っている人はいますか? 前もって感謝します。