Похоже, что Критерии не поддерживают эту функцию. Мне удалось решить эту проблему, добавив ограничение SQL к запросу, чтобы отфильтровать результаты подкласса.
criteria.Add(
Expression.SQL("{alias}.MyPrimaryKey NOT IN (SELECT MyPrimaryKey FROM Admin)"));
Это, по сути, исключает и вытекает из SQL-запроса Employee, в котором этот Employee существует в таблице Admin, поэтому возвращаются только сотрудники, которые не являются администраторами.
Первоначально я пытался отдельно запросить таблицу Admin через Criteria, чтобы получить список идентификаторов, которые я затем ввел в запрос Employee с помощью оператора NOT IN Criteria Restrictions.Not(Restrictions.In())
, но SQL Server ограничивает количество параметров до 2100 и взрывается, если эта коллекция идентификаторов, которую вы пытаетесь исключить, содержит более 2100 элементов.