@OneToMany 관계의 집합으로 생성 된 개체를 업데이트하는 데 문제가 있습니다.@OneToMany 관계의 일부로 생성 된 항목 업데이트
하우스 :
@Entity
public class House {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "person", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Person> persons;
public void addPerson(Person p) {
persons.add(p);
public Set<Person> getPersons() {
return persons;
}
}
사람 : 그 집에 살고있는 주택과 사람들로 구성된 매우 단순한 도메인 모델을 가지고
한다고 가정
나 '@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
@ManyToOne
private House house;
}
ve는 Spring Boot JPA 저장소와 HouseService를 가지고있다 :
@Transactional
public Person addPerson(Long houseId) {
House house = houseRepository.findOne(houseId);
Person person = new Person();
house.addPerson(person);
houseRepository.save(house);
return person;
}
위의 메서드를 호출하면 새 Person이 만들어지고 데이터베이스에 해당 Person이 유지되지만 반환 된 Person 인스턴스에는 ID 집합이 없습니다. 즉, addPerson(). getId()는 null을 반환합니다. 지속 된 버전의 ID를 가진 사람 인스턴스를 반환하도록 서비스를받을 수 있습니까?
서비스의 addPerson() 메소드를 사용하여 생성 된 Person을 변경하고 이후 변경 사항을 유지할 수 있습니다.
아마도 너는 bidirectonnnal 관계 집을 가져야 만한다. 그러나 사람은 집에 갈 수 없다. – Tokazio
죄송합니다. 코드에서 제외했습니다. 양방향 관계가 있습니다. 이것을 보여주기 위해 질문을 업데이트했습니다. 감사. – bobsyouruncle
도 캐스케이드가 포함되어 있습니까? – Tokazio