Я бы просто создал псевдоним для коллекции и добавил ограничения.
var parentsWithKidName = session.CreateCriteria<Parent>()
.CreateAlias("Children", "c", JoinType.InnerJoin)
.Add(Restrictions.Eq("c.Name", childName))
.SetResultTransformer(Transformers.DistinctRootEntity())
.List<Parent>();
Это приведет к
select p.*
from parent p
inner join child c on /* however it's mapped? */
where c.Name = ?
Отдельный корневой преобразователь сущностей будет обрабатывать набор результатов и удалять дублированных родителей. Они все еще сталкиваются с проводом, хотя.