2 つの JavaBean 構造をマップしようとしています (ここでは簡略化):
package foo;
public class Container {
private List<Item> items;
public List<Item> getItems() { return items; }
public void setItems(List<Item> items) { this.items = items; }
}
public class Item {
private String message;
public String getMessage() { return message; }
public void setMessage(String message) { this.message = message; }
}
さらに、パッケージ内に同じプロパティを持つ等しい Bean がありbar、2 つの間のマッピングを次のように行います。
ModelMapper mapper = new ModelMapper();
bar.Container barContainer = mapper.map(fooContainer, bar.Container.class);
ここで、ソースfooContainerには項目のリストが含まれており、その中にはプロパティが a にmessage設定されているものと、プロパティ値として設定されてStringいるものがありnullます。
マッピングの結果で、のリストがリストにfoo.Item正しくマッピングされているように見えbar.Item、最初のmessageプロパティも正しくマッピングされていることがわかりました。ただし、プロパティのnull値を持つ最初のアイテムの後、ソース プロパティの内容に関係なく、後続のアイテムのmessageすべてのプロパティ値がマップされます。messagenull
デバッグで理由がわかりました: 宛先プロパティ値がnullメッセージ プロパティ パスになると、MappingEngineImpl:207 で影付きとしてマークされ、MappingEngineImpl:142 の後続の項目では無視されます。
これは moddelmapper のバグですか、それとも Bean プロパティのリストのマッピングを有効にするために別の方法で modelmapper を構成する必要がありますか?