Beim Einfügen in Hibernate für OneToMany Mapping. Die gleichen Daten werden zweimal eingefügt.Doppelte Daten für OneToMany-Mapping im Ruhezustand
Mitarbeiter:
@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<>();
}
Adresse:
@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;
}
Wenn ich POST-Anfrage verwenden, um die Daten zu speichern: speichern Anfrage für den 1. Mitarbeiter:
{
"name": "Test1",
"designation": "SAL1",
"addresses": [
{
"city": "Delhi",
"country": "India"
},
{
"city": "Noida",
"country": "India"
}
]
}
speichern Anfrage für 2. angestellter:
{
"name": "Test2",
"designation": "SAL2",
"addresses": [
{
"city": "Delhi",
"country": "India"
},
{
"city": "Noida",
"country": "India"
}
]
}
In diesem Fall in Adresstabellen enthält 4 Einträge jeweils 2 für Noida: Indien und Delhi: Indien.
Ich wollte verstehen, was ist der beste Weg, nur 1 Eintrag für jede Adresse Daten haben, zum Beispiel 1 für Noida: Indien und 1 für Delhi: Indien.
Überprüfen Sie, ob Ihre Anfrage zweimal gesendet wird. –
Nein, ich sende es zweimal für zwei verschiedene Mitarbeiter, aber ich möchte, wenn wir diese Adresse bereits in der Adresstabelle haben, die es statt einer neuen Zeile in der Adressentabelle abbilden soll. –
Dann müssen Sie einen zusammengesetzten Schlüssel erstellen, der Land und Stadt enthält. Untersuchen Sie zusammengesetzte Schlüssel –