Я избегаю использования hql или sql при использовании NHibernate. Сильно типизированные запросы великолепны.
Кажется, что следующий код будет делать то, что вы хотите.
using (ITransaction transaction = session.BeginTransaction())
{
var pets = session
.QueryOver<Pet>()
.Where(p => p.PetName == "S.J.")
.List();
foreach (var pet in pets){
session.Delete(pet);
}
transaction.Commit();
}