Мне нужно записать мой query.getResultList() в файл CSV.

Я вызываю запрос по этому поводу:

        final Query q = em.createNamedQuery("getalljobs");
        final List<Job> joblist = q.getResultList();

И Namequery просто выполняет "SELECT * FROM TABLE"

Результат query.getResultList() выглядит так:

[id;name, id;name, ... ]

Я не могу использовать OpenCSV

Файл CSV должен иметь ЗАГОЛОВКИ.

-1
Phil 26 Янв 2022 в 12:11
Таким образом, каждый элемент в BerufeList должен быть отдельной строкой в ​​целевом CSV-файле, верно?
 – 
Sergey Tsypanov
26 Янв 2022 в 12:44
Да все верно
 – 
Phil
26 Янв 2022 в 12:53
В этом нет ничего сложного. Просто создайте файл с расширением .csv на Java, затем переберите свой список и напишите в файл, используя howtodoinjava.com/java11/write-string-to-file Сначала вам нужно написать заголовки. Затем переберите свой список. Пожалуйста, попробуйте что-нибудь.
 – 
SMA
26 Янв 2022 в 13:12
Не могу использовать его, потому что я использую Java 8
 – 
Phil
26 Янв 2022 в 13:19

2 ответа

Лучший ответ

Вы можете использовать что-то вроде

Query q = em.createNamedQuery("getalljobs");
List<Job> jobList = q.getResultList();
String csvHeader = getHeader();

try (PrintWriter fw = new PrintWriter(new FileWriter("output.csv"))) {
  fw.println(csvHeader);
  for(String line : jobList){
    fw.println(line);
  }
}
1
Sergey Tsypanov 26 Янв 2022 в 15:54
Но как мне получить или лучше установить заголовки этой душой?
 – 
Phil
26 Янв 2022 в 15:12
Я обновил ответ
 – 
Sergey Tsypanov
26 Янв 2022 в 15:54

Решение

Запишите строку за строкой в ​​файл с помощью StringBuidler.append. Для этого добавьте запятую и новую строку после каждой строки.

1
Phil 26 Янв 2022 в 13:45