ModelMapper — автоматическое картографированиеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ModelMapper — автоматическое картографирование

Сообщение Anonymous »

Как я могу автоматически отображать модели, подобные приведенным ниже?

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

public class RewardClaim {
private PlayerEntity owner; // PlayerEntity extends Entity which has a .getId()
}
Сопоставляет

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

public class RewardClaimResponseModel {
private String ownerId;
}
Это РАБОТАЕТ нормально, если я реализую это вручную:

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

Converter entityToEntityIdConverter = context -> {
Entity entity = context.getSource();
return entity != null ? entity.getId() : null;
};

modelMapper.typeMap(RewardClaim.class, RewardClaimResponseModel.class)
.addMappings(mapper -> mapper.using(entityToEntityIdConverter)
.map(RewardClaim::getOwner, RewardClaimResponseModel::setOwnerId));
Однако этот тип сопоставления сущности со строковым идентификатором должен выполняться много раз, и я не хочу вручную добавлять каждое сопоставление, как показано выше. Поэтому мне нужно обобщить решение. Другой пример:

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

private UserEntity user; -> private String userId; // Another example
По сути, что-то вроде этого псевдокода

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

modelMapper.typeMap(Object.class, Object.class)
.addMappings(mapper -> mapper.using(entityToEntityIdConverter)
.map(FIND HERE THE get FUNCTION, FIND HERE THE set FUNCTION));
Я не совсем понимаю, как работает modelMapper, но я пробовал несколько способов добиться этого с помощью конвертеров и карт типов с помощью Reflection, но безуспешно.
Одна из моих последних попыток здесь (в основном псевдокод): https://pastebin.com/gy5g5fXa
Это кажется выполнимым, но мне не повезло. Есть идеи, как я могу этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/787 ... ic-mapping
Ответить

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

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

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

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

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