Привет, я пытаюсь использовать Dozer для сопоставления моего объекта домена Hibernate с DTO. Исходное сопоставление - это объект, содержащий набор. Используя преобразование API, отображение работает нормально, но порядок в моем результирующем наборе не сохраняется. Есть ли способ сохранить порядок в наборе результатов? Спасибо,
Картография бульдозера настроена на настройку
Ответы (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
Существует дубликат этого вопроса, в котором объясняется, как указать Dozer использовать LinkedHashSet: stackoverflow.com/questions/10946350/
- person Arlo Guthrie; 26.09.2016