#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 все еще находился в контексте сохранения?