Вы на правильном пути.Если вы создаете интерфейс мебели или базовый класс и хотите, чтобы Table and Chair реализовали / расширили этот тип, вам следует идти вперед.Затем вы можете иметь
List<Furniture>
для вашего дома.
Единственный случай, когда вам нужно будет изменить свое отображение, это если вы хотите реализовать любую из стратегий полиморфного отображения, описанную вдокументация гибернации.Некоторые варианты:
, чтобы создать таблицу мебели и иметь вместо нее все стулья / таблицы (одна таблица на иерархию классов).Вам не нужно делать это.В этом случае ваша таблица будет иметь все свойства обоих классов, поэтому не все столбцы будут использоваться в зависимости от сохраняемого типа.Там будет столбец «дискриминатора», чтобы hibernate мог определить тип строки.
Вы хотите создать таблицу мебели и реорганизовать / нормализовать ваши таблицы Table / Chair так, чтобы всеобщие поля вытягиваются в мебельный стол.Вы держите столы и стулья.Это еще один тип полиморфного отображения (см. Документы)
Другие параметры в спящих документах.
Вариант 1 является предпочтительной стратегией вя думаю, что это документация по гибернации.
Но чтобы приступить к этому, вам не нужно ничего делать - ваши сущности могут расширяться / наследоваться от других типов без каких-либо особых картографических соображений, если выжелающих иметь дубликаты столбцов в таблицах.
Я бы написал несколько простых JUnit или еще каких-нибудь тестов и попробовал бы.