0
OneToMany 매핑을 위해 최대 절전 모드에서 삽입을 수행하는 중. 동일한 데이터가 두 번 삽입됩니다.최대 절전 모드에서 OneToMany 매핑을위한 중복 데이터
직원 :
@Entity
public class Employee {
@Id
@GeneratedValue
private int empId;
private String name;
private String designation;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "employee", fetch = FetchType.EAGER, orphanRemoval = true)
private Set<Address> addresses = new HashSet<>();
}
주소 :
@Entity
public class Address {
@Id
@GeneratedValue
private int addressID;
private String city;
private String country;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "empId")
@JsonIgnore
private Employee employee;
}
나는 데이터 저장 POST 요청을 사용하는 경우 : 2에 대한
{
"name": "Test1",
"designation": "SAL1",
"addresses": [
{
"city": "Delhi",
"country": "India"
},
{
"city": "Noida",
"country": "India"
}
]
}
저장 요청 : 1 직원에 대한 저장 요청을 직원 :
{
"name": "Test2",
"designation": "SAL2",
"addresses": [
{
"city": "Delhi",
"country": "India"
},
{
"city": "Noida",
"country": "India"
}
]
}
이 경우 주소 테이블에는 Noida : India 및 Delhi : India에 대해 각각 4 개의 항목이 포함되어 있습니다.
Noida : India는 1, Delhi : India는 1 인 각 주소 데이터에 대해 1 개의 항목 만 가져 오는 가장 좋은 방법은 무엇인지 이해하고 싶습니다.
요청이 두 번 전송되는지 확인하십시오. –
아니요, 2 명의 다른 직원을 위해 두 번 보냅니다. 그러나 주소 테이블에 해당 주소가 이미있는 경우 주소 테이블에 새 행을 만드는 대신 매핑해야합니다. –
그러면 국가와 도시가 포함 된 복합 키를 만들어야합니다. 합성 키 살펴보기 –