JPA поиск дочернего класса - PullRequest
0 голосов
/ 20 марта 2012

В JPA, как написать запрос для загрузки дочернего класса. Например, мне нужен запрос для загрузки paymentSet, который содержит CashPayment, если есть, CheckPayment, если есть.

Спасибо.

class SalesOrder {
  Set<Payment> paymentSet;
}
class Payment {};
class CashPayment extends Payment;
class CheckPayment extends Payment;

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Как вы решите эту проблему, зависит от того, как вы смоделировали вашу базу данных.Страница вики-книг по JPA Inheritance очень хороша для просмотра доступных вариантов.Один из вариантов - сохранить все Payment в одной таблице, но указать @DiscriminatorValue, чтобы указать, какой конкретный класс следует загрузить.Например:

@Entity
@Inheritance
@DiscriminatorColumn(name="PAYMENT_TYPE")
@Table(name="PAYMENT")
class Payment {
  @Id
  private long id;
  //...
}

@Entity
@DiscriminatorValue("CASH")
class CashPayment extends Payment {
}

@Entity
@DiscriminatorValue("CHECK")
class CheckPayment extends Payment {
}
0 голосов
/ 20 марта 2012

Вам необходимо отобразить отношения наследования.Я ссылаюсь на документацию: http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/. Вы также можете просмотреть вопросы о стековом потоке, связанные с «наследованием jpa».

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