Ovviamente non ricordavo di certo il post di Gianmaria, ma sono proprio caduto in questo problema. Nel mio caso non uso Criteria ma HQL, ma il problema è lo stesso ed è descritto bene nel post sopra indicato.
Per completezza usando HQL avremo:
1: IQuery obj_query = this.Session.CreateQuery(query);
2: ...
3: ...
4: ...
5: // Restituisco i risultati
6: return obj_query.SetResultTransformer(Transformers.DistinctRootEntity).List<T>();
dove Query è la nostra query HQL da eseguire e T è il tipo generico.