#mapstruct
#mapstruct
Вопрос:
После преобразования в dto с использованием mapstruct порядок дочерних идентификаторов перемешивается. Если я верну только объект без преобразования в dto, дочерний элемент будет правильно упорядочен
«данные»: [ { «PersonName»:»TestUser», «автомобили»: [ { «id»: «2021-000001» }, { «id»: «2021-000003» }, { «id»: «2021-000002» }, { «id»: «2021-000004» } } ]
Ответ №1:
Причина, по которой порядок отличается, связана с тем, что HashSet
MapStruct по умолчанию использовал a при отображении в a Set
.
Текущие типы реализации для MapStruct следующие:
Тип интерфейса | Тип реализации |
---|---|
Iterable |
ArrayList |
Collection |
ArrayList |
List |
ArrayList |
Set |
HashSet |
SortedSet |
TreeSet |
NavigableSet |
TreeSet |
Map |
HashMap |
SortedMap |
TreeMap |
NavigableMap |
TreeMap |
ConcurrentMap |
ConcurrentHashMap |
ConcurrentNavigableMap |
ConcurrentSkipListMap |
Это можно увидеть в типах реализации, используемых для сопоставления коллекций
В настоящее время существует запрос функции на изменение этого в набор / карту, сохраняющий порядок, и он будет включен в 1.5.
На данный момент вы можете исправить это, используя an, @ObjectFactory
который вернет LinkedHashSet