2016-07-02 6 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タイプのプロパティの設定者がありますか? – Gunnar

+0

@Gunnar DTOのセッターはいません – silentprogrammer

+1

それは問題です。 MapStructは、マップされた型で状態を取得または設定するためにリフレクションを使用しません。生成されたコードでは、ソースからターゲットに状態を伝播するためにプレーンなgetter/setter呼び出しが使用されます。アクセス可能なフィールド(パブリックフィールドなど)をサポートすることに問題がありますが、それはプライベートとして宣言されている場合にも役に立ちません。 – Gunnar

答えて

2

ターゲット側のBeanには、マップされたプロパティの設定が必要です。

MapStructは、マップされた型の状態を取得または設定するためにリフレクションを使用しません。生成されたコードでプレーンゲッター/セッターコールが使用され、ソースからターゲットに状態が伝播されます。