Список для установки преобразования, кажется, меняет порядок элементов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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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