Наследование в JPA - Как получить доступ к значениям подкласса? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть следующие классы

class A {
private int field1;
private int field2;
private int field3;
private int field4;
}


Class B extends A {

private int field3;
private int field4;

}

 Class C extends A {
  private int field3;
  private int field4;
  }

Исходя из значения "field1" класса A, мне нужно получить доступ либо к полям класса B, либо к полям класса C и установить значения родительских полей.

Я использую orm mapping xml для JPA. Таблица класса A и их подклассы отображаются в разные таблицы, поэтому я определил стратегию наследования как JOINED.

В классе A есть поля, которые мне нужно преобразовать в POST-LOAD, а также мне нужно установить значения A. "field3" и A. "field4", поэтому я указал списки сущностей.

Запрос JPA создает соединение между этими тремя таблицами классов A, B, C и извлекает значения из всех трех классов.

Но на пост-загрузке я получаю только родительский класс А.

Мой вопрос: как получить доступ к значениям полей класса B и класса C? так что я могу установить значения родительского поля.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Сделать аннотацию. Затем вы можете сделать экземпляр , чтобы узнать, какой это тип, и привести его к этому типу:

if (a instance of B) {
      B b = (B) a;
} else if (a instance of C) {
      C c = (C) a;
}
0 голосов
/ 02 апреля 2012

Из вашего вопроса:

Запрос JPA создает соединение между этими тремя таблицами классов A, B, C и извлекает значения из всех трех классов.

поэтому создайте три разных класса A, B и C, а не наследуйте, как вы указали. Получить три таблицы в три объекта A, B и C, используя соединение. Теперь у вас есть три объекта a, b и c. Теперь проверьте значение a.field1 и получите доступ к вашему объекту b или c.

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