Ich entwickle eine Java Desktop-Anwendung und JPA für Persistenz verwenden. Ich habe ein Problem unten erwähnt:JPA - Entity Design Problem
Ich habe zwei Entitäten:
- Land
- Stadt
Land hat das folgende Attribut:
- Country (PK)
City hat das folgende Attribut:
- Cityname
Jetzt, da es in zwei verschiedenen Ländern ist die primaryKey für City-Tabelle in der datbase ein Verbundprimärschlüssel bestehen zwei Städte mit dem gleichen Namen sein kann von CityName
und .
Nun meine Frage ist, wie die Primärschlüssel der
City
alsEntity
in Java
@Entity
public class Country implements Serializable {
private String countryName;
@Id
public String getCountryName() {
return this.countryName;
}
}
@Entity
public class City implements Serializable {
private CityPK cityPK;
private Country country;
@EmbeddedId
public CityPK getCityPK() {
return this.cityPK;
}
}
@Embeddable
public class CityPK implements Serializable {
public String cityName;
public String countryName;
}
Jetzt zu implementieren, wie wir wissen, dass die Beziehung Country
-City
OneToMany
ist und dies zu zeigen, Beziehung in dem obigen Code, habe ich eine country
Variable in City
Klasse hinzugefügt.
Aber dann haben wir doppelte Daten (countryName
) an zwei Stellen im Objekt City
Klasse gespeichert: ein im country
Objekt und andere im cityPK
Objekt.
Aber auf der anderen Seite, beide sind notwendig:
countryName
incityPK
Objekt notwendig ist, weil wir zusammengesetzte Primärschlüssel in dieser Art und Weise umzusetzen.countryName
incountry
Objekt ist notwendig, weil es die Standardmethode ist, relacshipeship zwischen Objekten zu zeigen.
Wie umgehen Sie dieses Problem?
Ist dies eine Standardmethode zur Behandlung dieser Art von Problem? Ist dieses Problem in JPA häufig? –
@Yatendra: Ja, es ist ein Standardweg (wenn Sie keine Ersatzschlüssel verwenden, wie Peter es vorschlägt). – axtavt