Следите за сущностью JPA со многими отношениями к одному - PullRequest
0 голосов
/ 02 марта 2020

Я ищу эффективный способ историзации моих сущностей.

Для этой цели я добавил двунаправленные отношения между моими двумя сущностями. Я следовал многим советам во время экспериментов и нашел это решение. Вопрос в том, хорошее ли это решение?

Вариант использования:

У меня есть две сущности: одна содержит еще один такой: enter image description here

Связи между двумя объектами выполняются следующим образом: enter image description here

При обновлении объекта 1: Я хочу, чтобы предыдущий объект был сохранен. Недавно созданный будет связан с сущностью 2 enter image description here

Вот код из Entity1Controller:

@PutMapping("/entity1/{id}")
public Entity1 replace(@PathVariable Long id, @Valid @RequestBody Entity1 replacement)
  {
    return entity1Repository  
        .findById(id)
        .map( found -> {  log.debug(found.getDescription());

                          Entity1 newEntity = customRepo.replace(found, replacement, this.getUser());
                          List<Entity2> listEntity2 = found.getEntities2();
                          for(Entity2 entity02: listEntity2) {
                            entity02.setEntity1(newEntity);
                          }
                          entity2Repository.saveAll(listEntity2);

                          return newEntity;
                       }
             )
        .orElseThrow( () ->  new EntiteNotFoundException(Entity1.EMPTY_INSTANCE, String.format("id = [%s]", id), null)
                    );

Например, это решение, которое я придумал с. Он работает для разумного количества данных, но я скептически отношусь к его производительности ..

У нас будет гораздо больше связей и данных ... именно поэтому я хотел бы поделиться вашим опытом в этом решении

...