【发布时间】:2013-09-09 13:15:15
【问题描述】:
我有如下客户类和地址类: Customer 类中的 officeAddressId、homeAddressId 和 secondaryAddressId 用于表中的外键映射。
public class customer implements serializable
{
private static final long serialVersionUID= -5830229553758180137L;
int age;
String officeAddressId= null;
String homeAddressId= null;
String secondaryAddressId= null;
}
public class Address implements serializable
{
private static final long serialVersionUID= -5130229553758180137L;
private String addressId = null;
private String addressLine = null;
private String cityName = null;
private String stateName = null;
private String countryName = null;
private String pincode = null;
}
我的数据库表是直截了当的:
CREATE TABLE customer
(
customerID varchar(40) primary key,
officeAddressId varchar(40),
homeAddressId varchar(40),
secondaryAddressId varchar(40),
age int
);
CREATE TABLE Address
(
addressID varchar(40) primary key,
addressLine varchar(40),
cityName varchar(40),
stateName varchar(40),
countryName varchar(40),
pincode varchar(10),
);
我在服务层创建地址对象(家庭、办公室和次要联系人的地址 1 的 3 个对象)和客户对象并打开交易。我不确定应该如何在 hbm 映射文件中给出外键关系,以及如何保存这四个对象(3 个地址对象和 1 个客户对象)以及外键关系以何种顺序正确保存在数据库中。
提前谢谢....
【问题讨论】:
-
这是
Customer(应该大写)和Address之间的many-to-one关系。在Customer类中,将String officeAddressId更改为Address officeAddress。 -
我现在不知道您将在数据库中放入多少数据,但您的表中有一些冗余。因为对于每个地址,您都保存了城市和相应的州、PIN 码和国家名称。您可以使用密码和国家名称作为键创建另一个表。或者,如果它不是世界范围内的应用程序,您的创建 - 只是密码。