MapStructを使用して2つのオブジェクトをマッピングしようとしています。私はしばらく検索していましたが、何かを見つけることができませんでしたが、プログラミングに慣れていないので、私が作っているよりも簡単だと確信しています。MapStruct arrayListからの取り出し
SourceObject:ここ
は、いくつかのバック剥奪コード(それがここにあるよう宛先が子変数をオブジェクトとしてのArrayListから子オブジェクトが同じ型でないと、実際のコードが複雑であることに注意してください)です
public class SourceObject {
public ArrayList<ListObject> list = new ArrayList<ListObject>();
public SourceObject() {
list.add(new ListObject());
}
}
ListObject
public class ListObject {
public DetailsObject details = new DetailsObject();
public ListObject() {
details.forename="SourceForename";
details.surname="SourceSurname";
}
}
DestinationObject
public class DestinationObject {
public DetailsObject details = new DetailsObject();
public DestinationObject() {
details.forename="DestinationForename";
details.surname="DestinationSurname";
}
}
DetailsObject
public class DetailsObject {
public String forename;
public String surname;
}
これは私が直接SourceObject内DetailsObjectを置く場合は正常に動作しますが、私がしようとすると問題になるだろう
@Mappings({
@Mapping(target="details.forename", source="list.get(0).details.forename"),
@Mapping(target="details.surname", source="list.get(0).details.surname"),
})
DestinationObject toDestination(SourceObject source);
マッパーそれをtから取る彼はリストする。
[エラー]目標org.apache.maven.plugins:maven-compiler-pluginを実行できませんでした:3.5.1:プロジェクトテンプレートでコンパイル(デフォルトコンパイル):コンパイルエラー:コンパイルエラー:
は[ERROR] .../srcに/メイン/ javaの/マッパー/ SourceToDestinationMap.java:[12,13]という名前のプロパティ "list.get(0).details.surnameは、" ソースパラメータ(S内に存在します)。あなたは "list.empty"を意味しましたか?
[ERROR] .../src/main/java/Mapper/SourceToDestinationMap.java:[11,9]ソースパラメータに "list.get(0).details.forename"という名前のプロパティが存在しません。 。あなたは "list.empty"を意味しましたか?
EDIT:マッパーの現在の状態:
@Mapper
public interface SourceToDestinationMap {
@Mapping(target = "details", source = "list")
DestinationObject toDestination(SourceObject source);
default DetailsObject map(List<ListObject> source) {
return map(source.get(0));
}
DetailsObject map(ListObject source);
}
完全なマッパーコードと受け取ったコンパイルエラーを提供してください – saw303
あなたのマッピングコードが間違っています。具体的には、クラスのコードとマップしようとしているコードとが一致しません。 – Filip
申し訳ありませんが、私は誰かが簡単にarraylistから得る方法の方向に私を指し示すだろうと思って、それが共通の課題であると期待していました。私のプロジェクトからすべての詳細を取り出そうとするのではなく、私がやろうとしていることを示す簡単なプロジェクトを作成しました。これを反映するために最初の投稿を更新しました。うまくいけばそれは役に立ちます:) –