@gsaw

Как добиться от ModelMapper-а, что бы он не обновлял аттрибуты entity-класса, которых нет в модели?

У меня есть DTO объекты и есть Entity классы. Поля одинаковые, только в Entity классах есть дополнительное поле id под первичный ключ. Для меппинга я использую ModelMapper и он почему то портит мне id. Записывает туда 0.

К примеру есть у меня такая иерархия Segment -> Node

@Entity
class SegmentEntity {
    @OneToOne(optional = false)
    @NotNull(message = "start node is required!")
    NodeEntity startNode;
....


Если выполняется такой код для загруженного из базы Entity.

modelMapper(segmentModel, segmentEntity)

То у startNode полсе выполнения этого кода, id становится равно 0, естественно это портит первичный ключ.

Я пробовал добавить modellMapper следующее, но не помогает. Все равно у startNode получается id = 0

modelMapper.typeMap(Segment.class, SegmentEntity.class).addMappings(mp -> {
            mp.skip(SegmentEntity::setStartNode);
            mp.skip(SegmentEntity::setTargetNode);
            mp.skip(SegmentEntity::setHolds);
            mp.skip(SegmentEntity::setLoadingDocuments);
        });


Как добиться от ModelMapper-а, что бы он не обновлял аттрибуты entity-класса, которых нет в модели?

Спасибо
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@gsaw Автор вопроса
Вот так, как в коде ниже все заработало. Почему то вариант приведенный в вопросе не работал и Ноды не игнорировались.
modelMapper.addMappings(new PropertyMap<Segment, SegmentEntity>() {
            @Override
            protected void configure() {
                skip(destination.getStartNode());
                skip(destination.getTargetNode());
            }
        });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Попробуйте:
modelMapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы