2 명의 대상자와 주소가 있습니다. 사람은 부모이고 주소는 자식입니다.JPA 업데이트 부모 자식
- 담당자 : personPK, 상태
- 주소 : addressPK, person_fk, 상태
내 저장소 JPARepository을 확장한다. personRepository.save(person);
은 삽입시 잘 작동합니다. 그러나 두 테이블에서 상태 (예 : 활성)를 업데이트하여 person 객체를 업데이트 할 때 personRepository.save(person);
외래 키 참조 (person_fk)는 null로 설정됩니다.
@Entity
@DynamicUpdate
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="person_pk", nullable=false)
private Long personPK;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person",cascade = CascadeType.PERSIST)
private Set<Address> addresses = new HashSet<>();
...
}
그리고 내 자식 클래스 :
@Entity
@DynamicUpdate
@Table(name = "address")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "address_pk")
private Long addressPK;
@ManyToOne
@JoinColumn(name = "person_fk", referencedColumnName = "person_pk", nullable=false)
private Address address;
...
}
그리고
내 서비스 계층에서 내가 사용하여 업데이트하고 있습니다 :personRepostiry.save(person);
내가 뭐하는 거지 어떤 도움 여기서 뭐라구?
당신은 실패가 (당신의 업데이트 논리) –
@shadab 발생 코드를 표시 할 수 있습니다 당신의'Address' 엔티티에서 당신은 멤버가 필요하다고 생각합니다 : 'private private person'; 'private address address; – sanastasiadis
@sanastasiadis 전 그가 전체 코드를 마치 공유하지 않았다고 생각합니다. 추가가 너무 실패 할 수도 있습니다. –