如果我们有一个表格说EMP_CONTACTTYPE,如下所示
EMP EMPNAME CONTACTTYPE CONTACT
1 W 1 EMAIL
2 X 1 EMAIL
3 Y 2 PHONE
4 Z 2 PHONE
如果我们想要显示详细信息
EMAIL PHONE
W Y
X z
我们应该如何将实体对象设计为映射到同一个表“EMP_CONTACTTYPE” .
我为Contact创建了两个Entity Object,另一个为Emp创建了一个Entity Object,并且在Contact Entity上有一个onetomany映射
以下是联系实体
@Entity
@Table(name = "EMP_CONTACTTYPE")
public class CONTACT
{
private String CONTACT_TYPE;
private String CONTACT;
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "EMP_CONTACTTYPE", joinColumns = { xxxxxx })
private List<EMP> EMP;
}
以下是EMP实体
@Entity
@Table(name = "EMP_CONTACTTYPE")
public class EMP
{
private String EMPLOYEE_NAME;
private String EMPLOYEE_KEY;
}
预期结果类似于Contact Object Type(1和Email)我们需要两个Employee对象(W和X) . 我不确定加入是否是解决方案,或者不清楚如何为此添加联接 . 设计此场景时的任何建议 .
1 回答
您可以将两个Entity类组合到一个Entity类中,也可以使用两个表 .
但是,您最好将其拆分为两个表,并在两个表之间创建适当的关系 . 当前的架构设计不是最佳的 .
无论如何,根据您的情况并根据您的注释,由于您有一个包含所有这些数据的表,您可以从
CONTACT
类扩展EMP
类并创建一个鉴别器列 . 使用这种方法,您会发现以下类注释很有用:例如
您应该研究这些注释并选择适当的策略等 . 这应该让您走上正确的道路 .
如果您使用Discrimators with Hibernate,您还可以选择指定公式,例如