MAPStruct Retiefing из ArrayListJAVA

Программисты JAVA общаются здесь
Anonymous
MAPStruct Retiefing из ArrayList

Сообщение Anonymous »

Я пытаюсь использовать Mapstruct для картирования двух объектов. Я некоторое время искал, и я ничего не смог найти, хотя я новичок в программировании, поэтому я уверен, что это проще, чем я это делаю. < /p>

Вот некоторый листочный код задних кодов (обратите внимание, что реальный код более сложный, с дочерним объектом из ArrayList не такой же тип, что и дочерняя переменная объектов назначения, как Это здесь): < /p>

sourceObject < /em> < /p>

public class SourceObject {
public ArrayList list = new ArrayList();

public SourceObject() {
list.add(new ListObject());
}
}
< /code>

listObject < /em> < /p>

public class ListObject {
public DetailsObject details = new DetailsObject();

public ListObject() {
details.forename="SourceForename";
details.surname="SourceSurname";
}
}
< /code>

destinationobject < /em> < /p>

public class DestinationObject {
public DetailsObject details = new DetailsObject();

public DestinationObject() {
details.forename="DestinationForename";
details.surname="DestinationSurname";
}
}
< /code>

detailsObject < /em> < /p>

public class DetailsObject {
public String forename;
public String surname;
}
< /code>

mapper < /em> < /p>

@Mappings({
@Mapping(target="details.forename", source="list.get(0).details.forename"),
@Mapping(target="details.surname", source="list.get(0).details.surname"),
})
DestinationObject toDestination(SourceObject source);
< /code>

Это будет работать нормально, если я помещаю DefficeObject непосредственно в SourceObject, но стану проблемой, когда я пытаюсь взять его из списка. Ошибка, которую я получаю,: < /p>

[error] не удалось выполнить ogle org.apache.maven.plugins: maven-compiler-plugin: 3.5.1: компиляция (по умолчанию- Компиляция) на шаблоне проекта: Ошибка компиляции: Ошибка компиляции: < /p>

[ошибка] .../src/main/java/mapper/sourcetodestinationmap.java: [12,13] Нет имущества с именем "list.get (0) .details.surname" существует в параметре (ы) источника. Вы имели в виду "list.empty"? Назван «list.get (0) .details.forename» существует в параметрах (ы) источника. Вы имели в виду "list.empty"?@Mapper
public interface SourceToDestinationMap {

@Mapping(target = "details", source = "list")
DestinationObject toDestination(SourceObject source);

default DetailsObject map(List source) {
return map(source.get(0));
}

DetailsObject map(ListObject source);
}


Подробнее здесь: https://stackoverflow.com/questions/475 ... -arraylist

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