【问题标题】: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
 ...

DepartmentIdEmployeeId 是复合主键。我无法更改数据库。我想将此映射到两个实体:

@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 没有任何层级关系。

【问题讨论】:

    标签: hibernate jpa orm hibernate-mapping


    【解决方案1】:

    一行只能代表一个Entity对象。任何重复在一起的士气低落的属性都可以被视为Value 对象。 Value 对象的生命周期取决于实体对象的生命周期。当实体对象被删除时,值对象也随之删除。

    即使在分层方法中,每一行也可以呈现不同的type 书籍,但一行仅代表一个实体。

    所以你不能将它们表示为两个实体。

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 2021-09-24
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 2012-05-12
      相关资源
      最近更新 更多