Я столкнулся со следующей проблемой. У меня есть дерево объектов Java, для которых я должен экспортировать каждое значение поля в файл CSV. Результат экспорта должен быть похож на то, что у нас есть в SQL левое внешнее соединение (называемое декартовым произведением).
Автор класса
@DataField(pos = 1)
String firstName;
@DataField(pos = 2)
String lastName;
@OneToMany
List<Book> books;
@OneToMany
List<Editor> editors;
@DataField(pos = 7)
String Age;
Учебник
@DataField(pos = 3)
String title;
@DataField(pos = 4)
String year;
@OneToMany
List<Reference> references;
Ссылка на класс
@DataField(pos = 5)
String type;
@DataField(pos = 6)
String code;
Редактор классов
@DataField(pos = 8)
String name;
Примечания: - Аннотация @DataField указывает положение значения в записи CSV. - В этом примере у нас есть один объект Author (Charles, Moulliard), содержащий список из 2 книг («Верблюд в действии» и «Верблюд в действии 2») . Первая книга имеет три ссылки (ISBN 1234, ISBN 5678, ISBN 999), а вторая — одну ссылку (ISBB 1111). Автор содержит также список двух редакторов ("manning", "manning 2")
Вот пример и желаемый результат
«Имя», «Фамилия», «Возраст», «Название», «Год», «Тип», «Код», «Имя» «Чарльз», «Муллиард», «Верблюд в действии», «2009», « ISBN», «1234», «укомплектование», «43», «Чарльз», «мульярд», «верблюд в действии», «2009», «ISBN», «1234», «укомплектование 2», «43», «Чарльз ","мульярд","верблюд в действии","2009","ISBN","5678","укомплектование","43" "чарльз","мульярд","верблюд в действии","2009"," ISBN", "5678", "укомплектование 2", "43" "Чарльз", "мульярд", "верблюд в действии", "2009", "ISBN", "9999", "укомплектование", "43" "Чарльз ","мульярд","верблюд в действии","2009","ISBN","9999","укомплектование 2","43" "чарльз","мульярд","верблюд в действии 2","2011" ,"ISBB","1111","укомплектование","43" "Чарльз","мульярд","верблюд в действии 2","2011","ISBB","1111","укомплектование 2","43 "
Я попытался использовать рекурсивную функцию для помещения значений поля в Map of LinkedList: Map, где Integer = положение поля в CSV и Linkedlist = список объектов, но я потерял информацию о положении элемента в дереве.
С уважением,
Чарльз