2017-11-22 3 views
0

Ich habe etwas in der mapStruct-Dokumentation untersucht, aber nicht gefunden oder verstanden, was ich tun könnte, um dies zu erreichen: die Konversation einer Entität, die eine Schnittstelle zu einem flachen DTO-Objekt enthält.Wie konvertiert man eine Schnittstelle mit MapStruct?

Hier hat das Unternehmen mit dem Attribut:

public class Group { 
    ... 

    private IUser user; 

    ... 
} 

Hier der DTO:

public GroupDTO { 

    private Long idUser; 

    private String username; 
} 

Wir versuchen, diese Zuordnung:

@Mappings({ 
     @Mapping(source = "user.id", target = "idUser"), 
     @Mapping(source = "user.name", target = "username")}) 
GroupDTO toDTO(Group entity); 

Mit einem klassischen Mapping erzeugt mapStruct einen Fehler (IUser ist abstrakt; kann nicht instanziiert werden).

Irgendeine Idee? Danke.

+0

Sollen wir das @Aftermapping verwenden, um eine manuelle Zuordnung vorzunehmen? – MychaL

Antwort

0

Nicht sicher sein die beste Art und Weise, es zu tun ...

aber wir benutzten @AfterMapping das Objekt manuell in Standardmethode zu erstellen, die auf Schnittstelle zu implementieren.

Wir mussten @InheritInverseConfiguration für den umgekehrten Vorgang löschen.

0

Es sollte mit einem object factory method arbeiten:

public IUser createIUser() { 
    return new User(); 
} 

Diese Factory-Methode wird die aufgerufen werden, wenn eine Instanz von IUser benötigt wird.

Verwandte Themen