Заменить setResultTransformer(CriteriaSpecification.ROOT_ENTITY)
на setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
Это будет сделано!
РЕДАКТИРОВАТЬ: после прочтения комментария ОП
В этомкак мне вывести propertyConcern == нулевое свойство сверху в порядке?
На самом деле, Oracle имеет концепцию NULLS FIRST / LAST (Название темы: сортировка)
Но я GUESS Criteria API не поддерживает эту возможность (причина может быть в том, что только Oracle (или несколько RDBMS) поддерживают эту возможность, хотя и не уверен).
Хорошо, независимо от причины, по которой Criterai API не поддерживает это, вы можете выполнить следующий трюк, чтобы заставить его работать .... (при условии, что ваша БД поддерживает Null First / Last)
Order o = new Order(${propertyName}, true) {
@Override
public String toSqlString(Criteria criteria, org.hibernate.criterion.CriteriaQuery criteriaQuery)
throws HibernateException {
return super.toSqlString(criteria, criteriaQuery) + " NULLS FIRST"; /* or LAST*/
}
};
где $ {propertyName} означает имя свойства, которое вы собираетесь отсортировать
затем
criteria.addOrder(o);