JPA Проблема моделирования наследования - PullRequest
0 голосов
/ 13 марта 2011

вот моя проблема.У меня есть 3 класса, родительский класс, представляющий денежные потоки.Два подкласса один для доходов и другой для расходов.Дело в том, что я подкласс для переопределения поведения, а не состояния.Поэтому в базе данных у меня должна быть только одна таблица со столбцом типа.Я могу сделать это, используя стратегию Joined, но таблицы доходов и расходов все еще создаются правильно?Можно ли как-то это отобразить?

По сути, моя идея состоит в том, чтобы иметь только одну таблицу, представляющую денежные потоки с атрибутом типа, чтобы Орм знал, следует ли создавать экземпляр "Доход" или "Расход".Я хочу сделать это, потому что разница заключается в поведении, а не в состоянии, поэтому в таблицах доходов и расходов не будет никакого столбца, кроме ключа.

Я мог бы создать один класс и иметь атрибут типа, но этоприводит к очень грязному коду, и я предпочел бы использовать полиморфизм.Кроме того, мой код выглядит намного чище.

Ответы [ 2 ]

2 голосов
/ 13 марта 2011

Похоже, то, что вы описываете, это просто тип наследования Single Table . Все хранится в одной таблице. Вы просто указываете Discriminator Column , и JPA решает, какой тип объекта использовать, основываясь на его значении. Пример в документе Java для столбца Discriminator реализует то, что вы хотите сделать.

0 голосов
/ 13 марта 2011

Это звучит разумно для меня.Один вопрос заключается в том, отличаются ли операции базы данных по доходам и расходам.Другой вопрос - будет ли модель развиваться дальше той ситуации, в которой вы сейчас находитесь.

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