2016-07-02 4 views
1

Я пытаюсь использовать mapstruct в своем проекте 2.4 Java Java JPA. Шаги я сделал:Неизвестное свойство в обратном типе

Добавлена ​​Завис

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

Модель

@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); 
} 

Но его дает мне ошибку компиляции

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

Что может быть проблемой для ошибки?

+0

У вас есть сеттер для этого свойства в типе DTO? – Gunnar

+0

@Gunnar У меня нет сеттеров для DTO – silentprogrammer

+1

В этом проблема; MapStruct не использует отражение для получения или установки состояния в отображаемых типах, в генерируемом коде используются обычные вызовы getter/setter для распространения состояния из источника в цель. Существует проблема поддержки доступных полей (например, открытых полей), но это не поможет вам, поскольку вы получили их как конфиденциальные. – Gunnar

ответ

2

Боб на целевой стороне должен иметь сеттеры для отображаемых свойств.

MapStruct не использует отражение для получения или установки состояния в отображаемых типах, в генерируемом коде используются обычные вызовы getter/setter для распространения состояния от источника к цели.