Это действительно базовое использование. Вы прочитали документацию ?
Criteria c = session.createCriteria(Person.class, "person");
Disjunction or = Restrictions.disjunction();
or.add(Restrictions.and(Restrictions.eq("person.firstName", "xxxx"),
Restrictions.eq("person.lastName", "yyyy")));
or.add(Restrictions.and(Restrictions.eq("person.firstName", "aaaa"),
Restrictions.eq("person.lastName", "bbbb")));
// ...
criteria.add(or);
List<Person> result = (List<Person>) c.list();
Обратите внимание, что DTO должен означать «объект передачи данных», что означает передачу данных без переноса постоянных объектов. Так что называть вашу постоянную сущность PersonNmDTO
действительно сомнительно.