Как добавить измененные данные в базу данных, используя CrudRepository вместо замены данных в SpringBoot - PullRequest
1 голос
/ 13 мая 2019

Я получаю список объектов, используя объект CrudRepository для моего класса сущности.Я хочу дублировать список в базе данных с некоторым полем для каждого измененного объекта в списке.Как мне добиться этого с тем же объектом хранилища?

Пример кода следующий.Он изменяет существующие строки в базе данных.Я хочу добавить изменения как новые строки в базе данных.

@Autowired TestRepository testRepository;

List<SampleClass> sampleList = testRepository.findAllBySomeId(id);
sampleList.forEach(i -> i.setSomeValue(1234));
testRepository.saveAll(testRepository);

Нужно ли создавать отдельный объект Repository?Возможно ли это с тем же объектом Repository, аннотированным @Autowired?

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Например, вы можете создать конструктор копирования в SampleClass (не копировать поле id). После этого вы должны скопировать все полученные из БД объекты и сохранить их в БД. Вы можете сделать это так:

List<SampleClass> copyList = testRepository.findAllBySomeId(id).stream()
    .map(SampleClass::new)
    .collect(Collectors.toList);;
copyList.forEach(i -> i.setSomeValue(1234));
testRepository.saveAll(copyList);
1 голос
/ 13 мая 2019

autowire EntityManager, отсоединить объект и установить id в нуль

sampleList.forEach(i -> {
   entityManager.detach(i);
   i.setId(null);
   i.setSomeValue(1234);
});

и затем сохранить список в том же хранилище

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...