0
在Hibernate中爲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請求來保存數據:對於第二
{
"name": "Test1",
"designation": "SAL1",
"addresses": [
{
"city": "Delhi",
"country": "India"
},
{
"city": "Noida",
"country": "India"
}
]
}
保存要求: 的第一個員工的保存要求員工:
{
"name": "Test2",
"designation": "SAL2",
"addresses": [
{
"city": "Delhi",
"country": "India"
},
{
"city": "Noida",
"country": "India"
}
]
}
在這種情況下,地址表中包含4個條目2,分別爲諾伊達:印度和德里:印度。
我想了解每個地址數據只有1個條目的最佳方式,即1個用於Noida:印度,1個用於Delhi:India。
檢查您的請求是否被髮送兩次。 –
不,我給兩個不同的僱員發送兩次,但我想如果我們已經有地址表中的地址它應該映射到,而不是在地址表中創建一個新的行。 –
然後你需要創建一個包含國家和城市的組合鍵。看看複合鍵 –