JPA: как я могу расширить классы и изменить отображение таблиц? - PullRequest
0 голосов
/ 20 сентября 2010

Я создал базовый набор классов с методами ведения учета.

Мой класс Ledger позволяет вам вести базовый регистр, который позволяет вам получать текущий баланс, и выполнять транзакции в регистре, который добавляет новый LedgeEntry.

У меня хорошо работает эта общая бухгалтерская система.

Insider Ledger - это моя коллекция LedgerEntry, которая представляет собой записи списка.

Теперь я хочу использовать это для создания объектов Billing / BillingEntry (которые соответствуют таблицам BILLING и BILLING_ENTRIES) и объектам CustomerCredits / CustomerCreditsEntry (сопоставленным с CUST_CREDITS; CUST_CREDITS_ENTRY).

Я хотел бы создать эти классы, начиная с Ledger и LedgerEntry. Класс родительской сущности (Ledger, Billing, CustomerCredits) можно легко сопоставить с другой таблицей с помощью аннотации @Table.

Но я не уверен, как справиться с заменой сущностей LedgerEntry их соответствующими BillingEntry, CustomerCreditsEntry.


Редактировать 2010-09-24:

Я только что сдался, и теперь все объекты, обслуживаемые Леджером, переходят к дочерним объектам LedgerEntry (на данный момент).

Проблема здесь, я думаю, в том, что я не могу создать методы в родительском классе, которые ссылаются на объекты, которые существуют только в унаследованном классе?

1 Ответ

0 голосов
/ 20 сентября 2010

Звучит как сценарий purrrfect для дженериков:)

Я представляю что-то вроде:

public class Ledger<T extends LedgerEntry> {
   List<T> entries;
   // getters and setters
}

public class CustomerCreditsLedger extends Ledger<CustomerCreditsEntry> {
}

И, вероятно, для соединения JPA с наследованием таблиц взгляните на: http://www.jpox.org/docs/1_2/jpa_orm/inheritance.html (оно старое, но, похоже, правильное, и вычисление конфигурации на основе аннотаций не так уж сложно) Из того, что я прочитал, вы должны взглянуть на стратегии JOINED или TABLE_PER_CLASS.

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