Автоматическое отсоединение объекта при использовании потокового запроса

#java #jpa #spring-data-jpa

#java #jpa #spring-data-jpa

Вопрос:

У меня есть метод интерфейса в моем репозитории

 @Query("from Alert a")
Stream<Alert> streamAll();
  

Поскольку у меня может быть много предупреждений, но мне нужно обрабатывать только каждую запись за раз, и впоследствии мне не нужны связанные данные, я пишу код следующим образом

 streamAll()
  .forEach(alert-> {
    doProcessing(alert);
    entityManager.detach(alert);
  });
  

Где я явно выполняю отсоединение предупреждения. Мне было интересно, есть ли более приятный способ сделать это, чтобы я мог просто сделать

 streamAllWithDetach()
  .forEach(this::doProcessing);
  

Без написания большого количества пользовательского кода или оболочек AOP.

Ответ №1:

просто сделайте это простым. давайте создадим метод для переноса

 doProcessing(alert);
entityManager.detach(alert);