Hibernate расширяющий объект для чтения с дополнительными объединениями - PullRequest
0 голосов
/ 13 мая 2019

У меня есть объект, который соответствует какой-то таблице в БД

@Entity
@Table
public class MyEntity {
  @Id
  private Long id;

  @Column
  private String description;

  @OneToMany
  private List<Foo> foos;
...
//getters setters
...
}

И я хотел бы расширить эту сущность только для чтения и добавить дополнительные объединения в другую таблицу. Мне нужно это объединение только в одном случае для конкретного чтения пользователя:

@Entity
public class ExtendedEntity extends MyEntity {

  @ManyToMany(fetch = FetchType.EAGER)
  private List<Bar> bars;
}

Простое использование расширений создаст в БД столбец дискриминатора, который мне не нужен, поскольку я использую ExtendedEntity только для чтения. Я обнаружил, что взломал с помощью @DiscriminatorFormula, который будет преобразован в то же значение типа Integer, как это:

@DiscriminatorFormula("0")
@DiscriminatorValue("0")
public class MyEntity

@DiscriminatorValue("00")
public class ExtendedEntity extends MyEntity

Но это действительно похоже на взлом. С использованием @MappedSuperclass я не могу иметь ассоциаций, но это главная причина, по которой мне нужно расширять свою сущность.

Какие еще варианты у меня есть и каковы лучшие практики для этого варианта использования?

...