JPA Mixed Inheritance Strategy

У меня есть 3 сущности:

@Entity
public abstract class A {
  @Id
  public Long id;
  public String a1;
  public String a2;
  public String a3;

  //much more fields    
  //getters and setters
}

@Entity
public class B extends A {
  public String b1;
  public String b2;
  public String b3;

  //much more fields
  //getters and setters
}

@Entity
public class C extends A {
  public String c;
  //that's it. no more data

  //getters and setters
}

Я хочу отобразить эти классы в 2 таблицы. Первая будет содержать все данные A и C (т.е. наследование SINGLE_TABLE). А вторая будет содержать данные B и внешний ключ к A (т.е. JOINED наследование).

Я попробовал решение, предложенное здесь, но оно у меня не работает. Атрибуты BB1 и BB2 также входят в A.

Как реализовать такую стратегию? Классы A и C так же различны, как Собака и Кошка, поэтому я не могу объединить их в один класс.

Также я не хочу использовать table-per-hierarchy, что приведет к дублированию множества данных A.

6
задан Community 23 May 2017 в 12:26
поделиться