2016-08-05 3 views
0

Привет, я пытаюсь использовать Dozer для сопоставления объекта домена Hibernate с DTO. Исходным отображением является объект, содержащий набор. Используя API-преобразование, отображение работает отлично, но порядок в моем результирующем наборе не сохраняется. Есть ли способ сохранить порядок в наборе результатов? Спасибо,Набор настроек дозатора

ответ

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.

+0

Существует дубликат этого вопроса, в котором объясняется, как сообщить Dozer об использовании LinkedHashSet: http://stackoverflow.com/questions/10946350/how-to-tell-dozer-to-use-linkedhashset-collection-in -destination поля –