Весенние Данные Jpa OneToMany Сохранение Нового Ребенка В Сохраненном Родительском Обновлении Родителя

#java #spring #jpa #spring-data-jpa #one-to-many

Вопрос:

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

 @Entity
public class Person implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String firstName;

    private String lastName;

    private String identityNumber;

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "identityNumber", referencedColumnName = "identityNumber")
    private List<Car> cars = new ArrayList<>();

    @Enumerated(EnumType.STRING)
    private Status status;

    public enum Status{
        SINGLE,
        MARRIED
    }

    public void addCar(Car car){
        cars.add(car);
    }
}

@Entity
public class Car {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String model;

    private String identityNumber;
}
 
         String identityNumber = UUID.randomUUID().toString();

        Person person = Person.builder()
                .firstName("affasf")
                .lastName("asdasdsa")
                .status(Person.Status.SINGLE)
                .identityNumber(identityNumber)
                .cars(new ArrayList<>())
                .build();

        personRepository.save(person);

        Car car = Car.builder()
                .identityNumber(identityNumber)
                .model("BMW").build();

        person.addCar(car);

        person.setStatus(Person.Status.MARRIED);

        carRepository.save(car);

        return person;
 

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

Примечание : Я удалил аннотации ломбока, чтобы код был короче.

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

1. Любое изменение атрибутов сущности означает изменение самой сущности.

2. JPA управляет этим для вас в бэкэнде.

3. После еще некоторых исследований можем ли мы сказать, что после того, как я изменил свойство объекта person, а затем сохранил объект car, объект person также был обновлен в базе данных, потому что объект person все еще находился в контексте сохранения?