HQL поддерживает предложение IN, и если вы используете setParameterList, вы даже можете передать коллекцию.
var idList = new List<int>() { 5,3,6,7 };
_session.CreateQuery("DELETE MyDataClass o WHERE o.Id IN (:idList)")
.SetParameterList("idList", idList)
.ExecuteUpdate();
Имейте в виду, как упоминалось ddango в комментарии, что каскады отношений, указанные в ваших объектах не будет выполняться, поскольку выполнение запроса HQL просто преобразуется в запрос БД и фактически не загружает никаких объектов сущности.
вы можете использовать HQL для удаления нескольких объектов
Найдите здесь delete - пример session.delete
Пример HQL DELETE (вы можете использовать IN с HQL):
ISession session = sessionFactory.OpenSession();
ITransaction tx = session.BeginTransaction();
String hqlDelete = "delete Customer c where c.name = :oldName";
// or String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = session.CreateQuery( hqlDelete )
.SetString( "oldName", oldName )
.ExecuteUpdate();
tx.Commit();
session.Close();