Могу ли я создать другую сущность только с 2 полями для сопоставления с той же таблицей - PullRequest
0 голосов
/ 10 февраля 2019

Ниже приведена таблица только с 2 полями:

 customer_order_base { cust_id, cust_lookup_fact }

Это уже сопоставлено с сущностью с именем CustomerOrderBase, использующей оба поля.Мне нужно было создать более легкую модель Entity из нескольких других таблиц, некоторые из которых имеют более 40 полей, используя только подмножество полей в этих таблицах из соображений производительности.

Эти недавно созданные легкие объектытакже указывает на те же таблицы базы данных, что и для модели с большим весом.

К сожалению, я столкнулся с приведенной выше таблицей customer_order_base, которая имеет только 2 поля.Можно ли создать другую сущность для сопоставления с этой таблицей?Я хочу использовать его только для чтения и объединения с другими таблицами.

Без этой таблицы я не могу выполнить необходимые объединения, необходимые для некоторых таблиц.

Is the first case done like this? Using the 2 columns which already exist in the original mapping?

@Immutable
@Entity("DuplicateCustomerOrderBasename=")
@Table("customer_order_base")
public class DuplicateCustomerOrderBase {

  @Id
  @Generator(...)
  BigInteger cust_id;

  @Column(name="cust_fact", insertable="false", updatable="false")
  private String cust_lookup_fact;

}

1 Ответ

0 голосов
/ 10 февраля 2019

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

Первый:

Сопоставить всю таблицу с сущностью.Вы можете отобразить больше сущностей в одну и ту же таблицу, но вы должны пометить эти (маленькие) сущности с помощью org.hibernate.annotations.Immutable.Вы не можете изменять эти небольшие объекты.

Секунда:

Использовать наследование со стратегией наследования InheritanceType.SINGLE_TABLE.

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Base {

    @Id
    private Long id;
}

@Entity
@DiscriminatorValue("SubBase")
public class SubBase1 extends Base {

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