Привет, я пытаюсь использовать Dozer для сопоставления объекта домена Hibernate с DTO. Исходным отображением является объект, содержащий набор. Используя API-преобразование, отображение работает отлично, но порядок в моем результирующем наборе не сохраняется. Есть ли способ сохранить порядок в наборе результатов? Спасибо,Набор настроек дозатора
0
A
ответ
0
Set не поддерживает заказы по умолчанию. Вы пытались использовать LinkedHashSet в качестве реализации?
Недавно я сделал что-то подобное с помощью TreeSet. Я преобразовал неупорядоченный набор в упорядоченный набор. Секрет состоит в том, чтобы создать пустой TreeSet в DTO перед отображением.
TreeSet<MyClass> mySet = new TreeSet<MyClass>(new MyComparator());
myDTO.setMyClasses(mySet);
mapper.map(otherBean, myDTO);
После отображения Dozer, упорядочение в мишени (myDTO) будет совпадать с вашего компаратора.
Я подозреваю, что вы аналогично предварительно установили реализацию Set в своей целевой DTO на LinkedHashSet, тогда будет сохранен порядок исходного набора. Если нет, попробуйте установить реализацию вашего исходного компонента в LinkedHashSet.
Существует дубликат этого вопроса, в котором объясняется, как сообщить Dozer об использовании LinkedHashSet: http://stackoverflow.com/questions/10946350/how-to-tell-dozer-to-use-linkedhashset-collection-in -destination поля –