Картография бульдозера настроена на настройку

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


person qwertyqwerty    schedule 05.08.2016    source источник


Ответы (1)


По умолчанию набор не поддерживает порядок. Вы пробовали использовать LinkedHashSet в качестве реализации?

Недавно я сделал нечто подобное с помощью TreeSet. Я преобразовал неупорядоченный набор в упорядоченный. Секрет в том, чтобы создать пустой TreeSet в вашем DTO перед отображением.

TreeSet<MyClass> mySet = new TreeSet<MyClass>(new MyComparator());
myDTO.setMyClasses(mySet);
mapper.map(otherBean, myDTO);

После сопоставления Dozer порядок в цели (myDTO) будет соответствовать порядку вашего компаратора.

Я подозреваю, что если вы аналогичным образом предварительно настроите реализацию Set в своем целевом DTO на LinkedHashSet, то порядок исходного набора будет сохранен. Если нет, попробуйте также установить для реализации вашего исходного bean-компонента значение LinkedHashSet.

person Arlo Guthrie    schedule 26.09.2016
comment
Существует дубликат этого вопроса, в котором объясняется, как указать Dozer использовать LinkedHashSet: stackoverflow.com/questions/10946350/ - person Arlo Guthrie; 26.09.2016