2016-07-02 20 views
1

Ich versuche, Mapstruct in meinem Play 2.4 Java8 JPA-Projekt zu verwenden. Schritte, die ich getan habe:Unbekannte Eigenschaft in einem Rückgabetyp

Added Abhängigkeit

"org.mapstruct" % "mapstruct-jdk8" % "1.1.0.Beta1", 
    "org.mapstruct" % "mapstruct-processor" % "1.1.0.Beta1" 

Modell

@Entity 
public class Employee { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id;    
    private String fullName;   
    private String email; 
} 

EmployeeDto

public class EmployeeDto { 

    private String full_name; 
    private String email; 
} 

EmployeeMapper

@Mapper 
public interface EmployeeMapper { 

    EmployeeMapper INSTANCE = Mappers.getMapper(EmployeeMapper.class); 

    @Mapping(source = "fullName", target = "full_name") 
    EmployeeDto employeeToEmployeeDto(Employee employee); 
} 

Aber seine mir einen Kompilierungsfehler geben

error: Unknown property "full_name" in return type. 
[error]  @Mapping(source = "fullName", target = "full_name") 

Was das Problem für den Fehler sein könnte?

+0

Haben Sie einen Setter für diese Eigenschaft im DTO-Typ? – Gunnar

+0

@Gunnar Ich habe keine Setter für DTO – silentprogrammer

+1

Das ist das Problem dann; MapStruct verwendet keine Reflektion zum Abrufen oder Festlegen des Status in den zugeordneten Typen, einfache Getter/Setter-Aufrufe werden im generierten Code verwendet, um den Status von Quelle zu Ziel zu propagieren. Es gibt ein Problem, um zugängliche Felder zu unterstützen (z. B. öffentliche Felder), aber das würde dir auch nicht helfen, da du sie als privat deklariert hast. – Gunnar

Antwort

2

Die Bean auf der Zielseite muss über Setter für die zugeordneten Eigenschaften verfügen.

MapStruct verwendet keine Reflektion zum Abrufen oder Festlegen des Status in den zugeordneten Typen, einfache Getter/Setter-Aufrufe werden im generierten Code verwendet, um den Status von Quelle zu Ziel zu propagieren.