Как передать ArrayList в метод репозитория JPA из лямбда-выражения?

#java #java-stream

#java #java-stream

Вопрос:

Есть класс сущности:

 public class Call {
    private String uniqId;
    private String gwNumber;
}

String line = "qwe-123,10nrty-345,15nasd-567,17";

Arrays.stream(result.split("n")) // "n" is used to separate data for each entity
    .forEach(
              s-> {
                    String[] callFields =  s.split(",");  // "," is used to separate data for each filed  of entity
                    Call call = new Call();
                    call.setUniqId(callFields[0]);
                    call.setGwNum(callFields[1]);
                    List<Call> callList = new ArrayList<>();
                    callList.add(call);
                   }
            );
  

Как передать callList в репозиторий JPA.Метод saveAll (callList)?

Комментарии:

1. вместо того, чтобы объявлять callingList внутри, объявите его перед вашим потоком, а затем добавьте к нему все значения. Затем вызовите свою функцию сохранения из dao и передайте ей список в качестве аргумента. Если ваше репозиторий расширяет JPA или CRUD репозиторий, то в них уже есть функция сохранения, которая принимает list в качестве аргумента

2. сначала инициал, callList затем пропустите его через saveAll . Arrays.stream(line.split("n")) .map(s->s.split(",")).map(arr->new Call(arr[0],arr[1])) .collect(Collectors.toList());

Ответ №1:

Я думаю, вы должны забыть вызвать что-то. От Steram . Я не говорю, что это невозможно, но это не рекомендуется.

 class Call {}

List<Call> callList = Arrays.stream(result.split("n"))
          .map(s -> {
             Call call = new Call();
             // ...
             return call;
          })
          .collect(Collectors.toList());
  

List<Call> callList может быть записано в БД.