Mapstruct и несколько производных классовJAVA

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

Сообщение Anonymous »

У меня возникли проблемы с пониманием сопоставлений подклассов. У меня 3 класса:

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

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

public boolean isEmpty() {
return StringUtils.isEmpty(name);
}

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

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

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

@Data
public class Grandchild extends Child {
int count;
}
и 3 соответствующих класса 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;
}
Я пытаюсь собрать картографы, но мне трудно заставить их работать. Я пробовал использовать сопоставления подклассов следующим образом:

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

@Mapper(subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION)
public interface ParentMapper {
@SubclassMapping(target = GrandchildDto.class, source = Grandchild.class)
@SubclassMapping(target = ChildDto.class, source = Child.class)
@Mapping(target = "idDto", source = "id")
@BeanMapping(ignoreUnmappedSourceProperties = {"empty"}
ParentDto mapToParentDto(Parent parent)
}

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

@Mapper(uses = ParentMapper.class) ... not sure this is correct/necessary
public interface ChildMapper {
@SubclassMapping(target = GrandchildDto.class, source = Grandchild.class)
@Mapping(target = "nickNameDto", source = "nickName")
ChildDto mapToChildDto(Child child)
}

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

@Mapper(uses = ChildMapper.class) ... not sure this is correct/necessary
public interface GrandchildMapper {
@Mapping(target = "countDto", source = "count")
GrandchildDto mapToGrandChildDto(Grandchild grandchild)
}
У меня есть тест ChildMapper, который не удался, поскольку идентификатор (из Parent) не соответствует idDto (из ParentDto). Я также пробовал обрабатывать наследование с помощью MapperConfigs, но и здесь мне не удалось.
Как лучше всего обрабатывать множественное наследование с разными именами параметров?
Спасибо

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

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

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

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

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

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