код ниже даст вам список уникальных состояний:
Criteria criteria = getHibernateSession().createCriteria(StatesProvinces.class);
ProjectionList projectionList = Projections.projectionList()
.add(Projections.property("state"));
criteria.setProjection(Projections.distinct(projectionList));
list = criteria.list();
Недостаток hibernate distict заключается в том, что мы должны использовать его только с проекциями, а в случае, если нам нужна вся сущность, мы должны добавить проекцию ко всем полям и использовать setReusultTransformer, как показано ниже:
criteria.setResultTransformer (Transformers.aliasToBean (StatesProvinces.class));