2016-07-02 34 views
1

我想在我的Play 2.4 Java8 JPA项目中使用mapstruct。步骤我做:返回类型中的未知属性

添加依赖

"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类型中该属性的setter? – Gunnar

+0

@Gunnar我没有DTO设置者 – silentprogrammer

+1

那就是问题了; MapStruct不使用反射来获取或设置映射类型的状态,在生成的代码中使用普通的getter/setter调用来将状态从源传播到目标。支持可访问的字段(例如公共字段)有一个问题,但这不会帮助您,因为您将它们声明为私有。 – Gunnar

回答

2

目标端的bean需要有映射属性的setter。

MapStruct不使用反射来获取或设置映射类型的状态,在生成的代码中使用普通的getter/setter调用来将状态从源传播到目标。