【发布时间】:2011-02-03 12:00:12
【问题描述】:
我正在开发 Java 桌面应用程序并使用 JPA 进行持久性。我有一个问题如下:
我有两个实体:
- 国家
- 城市
国家有以下属性:
- 国名 (PK)
城市有以下属性:
- 城市名称
现在由于两个不同国家可以有两个同名城市,所以数据库中 City 表的主键是由CityName 和CountryName 组成的复合主键。
现在我的问题是如何在 Java 中将
City的主键实现为Entity
@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;
}
现在我们知道从Country 到City 的关系是OneToMany,为了在上面的代码中显示这种关系,我在country 类中添加了一个country 变量。
但是我们在City类对象的两个地方存储了重复数据(countryName):一个在country对象中,另一个在cityPK对象中。
但另一方面,两者都是必要的:
cityPK对象中的countryName是必要的,因为我们以这种方式实现复合主键。country对象中的countryName是必要的,因为它是显示对象之间关系的标准方式。
如何解决这个问题?
【问题讨论】:
标签: java jpa entity entity-relationship object-relationships