Отношение сущности JPA зависит от другого поля - PullRequest
0 голосов
/ 08 октября 2019

В моей базе данных есть таблица, представляющая общие поля для множества других вещей. Допустим, есть одна таблица, такая как Vehicle, а затем Vehicle имеет поля, такие как VIN, цвет, тип ...

Тогда есть другие таблицы, такие как Car и Truck, и когда тип "«на Vehicle есть« машина », мы хотим посмотреть на таблицу Car, чтобы найти другие свойства. Может быть, материал о топливной эффективности и количестве пассажиров. Когда type это «truck», мы хотим знать что-то о грузовиках, например, loadCapacity или что-то в этом роде.

Как вы моделируете что-то подобное? Вы встраиваете Vehicle во все другие типы? Есть ли способ сделать как @OneToOne между таблицами условно в поле «тип»?

1 Ответ

0 голосов
/ 08 октября 2019

Вы можете использовать стратегию MappedSuperClass или JoinedTable, если вы хотите следовать реальному способу ORM сделать это. Но это идет с ценой. С этими стратегиями связаны другие накладные расходы, такие как ограничение запросов и больше соединений на запрос и т. Д.

Если вы денормализуете таблицы, вы можете использовать стратегию фильтрации данных (я думаю, что поддерживаются только hibernate). Но теперь у вас есть все в одном классе, и это может быть более серьезной проблемой.

Поскольку вы используете REST, вы, вероятно, хотите обслуживать / api / Vehicles / 1 (исправьте меня, пожалуйста)

Для таких сценариев легче выполнить это, используя таблицу «Транспортное средство», в которой содержится «тип». Вы можете использовать сериализатор Джексона, чтобы опустить все ненулевые компоненты. Таким образом, в случае автомобиля, атрибуты транспортного средства и параметры автомобиля будут введены, но нулевые значения в грузовике, автобусе и т. Д. Будут опущены.

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