Как сопоставить денормализованную таблицу двум объектам? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть денормализованная таблица базы данных, содержащая сотрудников и отдел, в котором они работают:

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;
}

Но это не работает. Как я могу учесть это несоответствие импеданса между моей (объектной) моделью logi c и (физической) моделью базы данных? Я видел иерархический подход к решению этой проблемы, но я не верю, что это применимо к моему сценарию, поскольку Сотрудник и Отдел не имеют иерархических отношений.

1 Ответ

0 голосов
/ 11 июля 2020

Одна строка может представлять только один Entity Объект. Любые деморализованные атрибуты, которые повторяются вместе, можно рассматривать как объект Value. Жизненный цикл Value объекта зависит от жизненного цикла объекта сущности. Когда объект сущности удаляется, объект значения также присоединяется к нему.

Даже при иерархическом подходе каждая строка может представлять другую type книгу, но одна строка представляет только одну сущность.

Значит, вы не можете представить их как две сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...