MapStruct: Anzeigen Liste von Objekten, wenn Objekt zugeordnet ist, aus zwei Objekten
Angenommen ich habe eine solche Zuordnung:
@Mapping(source = "parentId", target = "parent.id")
Child map(ChildDto dto, Parent parent);
Nun muss ich anzeigen Liste der ChildDto Liste der Kinder, aber Sie alle haben die gleichen Eltern. Ich erwarte, etwas zu tun:
List<Child> map(List<ChildDto> dtoList, Parent parent);
Aber es hat nicht funktioniert.
Gibt es eine chance, es zu tun?
InformationsquelleAutor AlexB | 2016-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich, wie es zu implementieren mit Dekorateure, danke @Gunnar
Hier ist eine Implementierung:
Bohnen
Mapper
Decorator
Benutze ich
abstract class
, nichtinterface
für mapper, da beiinterface
Sie konnte nicht ausschließen, für die generation Methodemap(List<Child> children, Parent parent)
, und der code generiert wird, ist nicht gültig in der Kompilierung.InformationsquelleAutor AlexB
Nicht möglich out of the box so wie die Dinge stehen. Sie könnten einen Dekorateur oder nach-mapping-Methode, um das übergeordnete Element alle untergeordneten Objekte danach.
InformationsquelleAutor Gunnar
Habe ich ein
@AfterMapping
wie vorgeschlagen von Gunnar:@AfterMapping
public void afterDtoToEntity(final QuestionnaireDTO dto, @MappingTarget final Questionnaire entity) {
entity.getQuestions().stream().forEach(question -> question.setQuestionnaire(entity));
}
Diese stellte sicher, dass alle die Fragen wurden mit dem gleichen Fragebogen Einheit. Das war der Letzte Teil der Lösung für die Vermeidung der JPA Fehler
save the transient instance before flushing
auf die Schaffung einer neuen übergeordneten Einheit, die mit einer Liste von Kindern.InformationsquelleAutor Stephanie