Сопоставление нескольких производных классов с разными именами полей [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сопоставление нескольких производных классов с разными именами полей [дубликат]

Сообщение Anonymous »

У меня есть несколько классов:

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

@Data
public class Parent {
long id;
String name;
}

@Data
public class Child extends Parent {
String nickName;
}

@Data
public class Grandchild extends Child {
int count;
}
и связанные с ними DTO:

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

@Data
public class ParentDto {
long idDto;
String name;
}

@Data
public class ChildDto extends ParentDto {
String nickNameDto;
}

@Data
public class GrandchildDto extends ChildDto {
int countDto;
}
Я пытаюсь создать соответствующие конфигурации картографов/картографов, которые будут описывать сопоставления между Object и ObjectDto. Если я определяю конфигурацию MapperConfig для ParentToParentDto как:

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

@MapperConfig(mappingInheritanceStrategy = MappingInheritanceStrategy.AUTO_INHERIT_FROM_CONFIG,
unmappedSourcePolicy = ReportingPolicy.ERROR,
unmappedTargetPolicy = ReportingPolicy.ERROR)
public interface ParentMapperConfig {
@Mapping(target = "idDto", source = "id")
ParentDto map(Parent parent);

@Mapping(target = "id", source = "idDto)
Parent map(ParentDto parentDto);
}
и преобразователь как:

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

@Mapper(config = ParentMapperConfig.class)
public interface ParentToParentDto {
ParentDto map(Parent parent);

Parent map(ParentDto parentDto);
}
Моя реализация выглядит правильно с правильными сопоставлениями для ididDto.
Когда я создаю преобразователь ChildToChildDto, я бы предпочел не повторять сопоставления ididDto, но я не могу понять, как это сделать. Я пробовал:

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

@MapperConfig(uses = ParentMapperConfig.class)
public interface ChildMapperConfig {
@Mapping(target = "nickNameDto", source = "nickName")
ChildDto map(Child child);

@Mapping(target = "nickName", source = "nickNameDto)
Child map(ChildDto childDto);
}
и преобразователь как:

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

@Mapper(config = ChildMapperConfig.class)
public interface ChildToChildDto {
ChildDto map(Child child);

Child map(ChildDto childDto);
}
а также множество других заклинаний.
К сожалению, ChildToChildDto не получает сопоставление ididDto от родителя. Кажется, это должна быть решенная проблема, но я не могу найти решение.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ield-names
Ответить

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

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

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

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

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