Hibernate: использование одной и той же сущности для связи «один ко многим» с несколькими сущностями - PullRequest
0 голосов
/ 15 октября 2019

У меня есть случай, когда мне нужно использовать один и тот же класс сущностей в нескольких сущностях и создать ассоциацию. У меня есть конечная точка POST, где обрабатываются два разных запроса. При условии, что запрос DTO преобразуется в два разныхОбъекты сущности. Теперь мне нужно добавить новую функциональность к этой конечной точке, что требует от меня добавления новой таблицы. Предположим, что TableA и TableB - это разные права, которые создаются из одного и того же DTO на основе проверки типа. Если DTO имеет определенный флаг как true, он преобразуется в сущность Table A, в противном случае он преобразуется в Table B. В случаях, когда мне нужен список записей в таблице C. Мне нужно добавить список к обоим этим объектам, который вставляется в таблицу C. Итак, мне нужно знать, должен ли я создать для этой цели отдельный объект для таблицы A и таблицы B или могу ли я сослаться на одну и ту же таблицу объектов C, как показано ниже:

Как

@Entity
@Table(name = "TABLE_A")
public class TableA {

  ....
  ....

  @OneToMany(mappedBy = "tableA ", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
  private List<TableC> tableCLists;
  //Getters and Setters

}

@Entity
@Table(name = "TABLE_B")
public class TableB {

  ...
  ...
  @OneToMany(mappedBy = "tableB", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
  private List<TableC> tableCLists;

  //Getters and Setters
}


@Entity
@Table(name = "TABLE_C")
public class TableC {
  ...
  @ManyToOne(optional=false)
  @JoinColumn(name="TABLE_A_FIELDID")
  public TableA tableA;

  @ManyToOne(optional=false)
  @JoinColumn(name="TABLE_B_FIELDID")
  public TableB tableB;

}
...