2016-07-06 4 views
0

mapstrcutを使用してエンティティをdtoにマップしています。 "discount"の余分なフィールドがあり、このフィールドの値を管理するためにmapstructが必要です。このフィールドは2つの値(salePriceとretailPrice)に基づいて計算されます。Mapstruct - 数式を使用してフィールドをマッピングする(例:taget = "x"、source = "a + b")

私の質問どのようにmapstructを使用するようなこのようなマッピングを行うことができます。

@Mapping(target="discount", source="retailPrice-salePrice") 

私は建物が言う一方で、このラインコードブレークを追加してみました:

error: No property named "salePrice*retailPrice" exists in source parameter(s). 
      @Mapping(source="salePrice*retailPrice", target="discount") 

だからどのように私は、このようなマッピングを行うことができますか?

答えて

3

あなたはこのためにJava expressionsの機能を使用することができます。

@Mapping(target="discount", expression="java(source.getRetailPrice() - source.getSalePrice()") 

あるとして与えられた「表現」は、生成されたコードに追加されます。必要に応じて、追加のインポートを@Mapper#imports()経由で生成されたクラスに追加することができます。

私たちは、このような表現のために、実際のスクリプト言語をサポートするための(非常にあいまい)の計画をしましたが、それだけで正常に動作@Gunner我々はまだ:)

+0

おかげではありません:) –

関連する問題