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
すべてのプロパティ値がマップされます。message
null
デバッグで理由がわかりました: 宛先プロパティ値がnull
メッセージ プロパティ パスになると、MappingEngineImpl:207 で影付きとしてマークされ、MappingEngineImpl:142 の後続の項目では無視されます。
これは moddelmapper のバグですか、それとも Bean プロパティのリストのマッピングを有効にするために別の方法で modelmapper を構成する必要がありますか?