如何将非规范化表映射到两个实体?
Posted
技术标签:
【中文标题】如何将非规范化表映射到两个实体?【英文标题】:How to map a denormalized table to two entities? 【发布时间】:2020-07-10 22:09:54 【问题描述】:我有一个非规范化的数据库表,其中包含员工和他们工作的部门:
EmployeeId EmployeeName DepartmentId DepartmentName
1 Bob 1 HR
2 Lisa 1 HR
...
DepartmentId
和 EmployeeId
是复合主键。我无法更改数据库。我想将此映射到两个实体:
@Entity
@Data
class Employee
@Id
@Column("employeeId")
private int id;
@Column("employeeName")
private String name;
@ManyToOne
private Department department;
@Entity
@Data
class Department
@Id
@Column("departmentId")
private int id;
@Column("departmentName")
private String name;
但这不起作用。如何解释我的逻辑(对象)模型和数据库(物理)模型之间的这种阻抗不匹配?我见过hierarchical 解决此问题的方法,但我认为这不适用于我的场景,因为 Employee 和 Department 没有任何层级关系。
【问题讨论】:
【参考方案1】:一行只能代表一个Entity
对象。任何重复在一起的士气低落的属性都可以被视为Value
对象。 Value
对象的生命周期取决于实体对象的生命周期。当实体对象被删除时,值对象也随之删除。
即使在分层方法中,每一行也可以呈现不同的type
书籍,但一行仅代表一个实体。
所以你不能将它们表示为两个实体。
【讨论】:
以上是关于如何将非规范化表映射到两个实体?的主要内容,如果未能解决你的问题,请参考以下文章