Список для установки преобразования, кажется, меняет порядок элементовJAVA

Программисты JAVA общаются здесь
Anonymous
Список для установки преобразования, кажется, меняет порядок элементов

Сообщение Anonymous »

Я создаю сертификат и могу указать в нем транзитные страны, они должны быть сохранены в том порядке, в котором их задал пользователь. Но при некоторых обстоятельствах страны могут сохраняться в случайном порядке
Я посмотрел логи и оказалось, что порядок где-то меняется при конвертации из dto в сущность. Все маппинг происходит с использованием библиотеки Mapstruct и я подозреваю, что виноват метод CountryDTOListToCountrySet. Но я не могу найти никакой информации о том, можно ли спутать порядок при преобразовании из списка в набор. Может ли это случиться? А если нет, то как я могу зарегистрировать класс картографа, созданный Mapstruct? Чтобы я мог видеть, что происходит на каждом этапе сопоставления DTO с сущностью.
В моем случае в сущности есть поле.

Код: Выделить всё

private Set transitCountries = new HashSet();
Поле в dto

Код: Выделить всё

private List transitCountries;
Оба класса используют @Data из Lombok, если это важно
И это то, что генерирует Mapstruct

Код: Выделить всё

protected Set countryDTOListToCountrySet(List list) {
if ( list == null ) {
return null;
}

Set set = new HashSet( Math.max( (int) ( list.size() / .75f ) + 1, 16 ) );
for ( CountryDTO countryDTO : list ) {
set.add( countryDTOToCountry( countryDTO ) );
}

return set;
}
Я попробовал изменить HashSet на LinkedHashSet, но, похоже, это ничего не меняет. Я не знаю, если это не работает из-за ломбока или чего-то еще...

Подробнее здесь: https://stackoverflow.com/questions/787 ... f-elements

Вернуться в «JAVA»