Вы можете использовать столбец дискриминатора для разных подклассов сущностей, используемых при использовании стратегии «Таблица на иерархию».Они используют одну таблицу со ВСЕМИ столбцами для каждого поля в таблице.
Продолжая по этому маршруту:
Итак, если у вас есть Image и Article подклассы некоторой общей сущности, возможно, PostObject, ваша таблица будет выглядеть следующим образом:
POST_OBJECT [Table]
-------------------
id
POST_TYPE (this is the discriminator column, defined as IMAGE, ARTICLE, COMMENT)
COMMENT_ID
PATH
FULLTEXT
...
LIKES [Table]
-------------------
id
POST_OBJECT_ID_fk
После этого вы можете иметь внешний ключ для идентификатора POST_OBJECT в вашей таблице COMMENT.
Я бы предостерег вас, чтобы вы должным образом учли отношения между сущностями.То, что у вас есть выше, скорее всего, приведет к объектам Comment, Article, Image и Like.
То, что вы показали, более близко напоминает таблицу для конкретного класса.Плюс: более нормализованный макет Кон: больше соединений
Я бы посоветовал проверить документацию Hibernate на плюсы и минусы каждого, чтобы вы могли принять более обоснованное решение: http://docs.jboss.org/hibernate/core/3.5/reference/en/html/inheritance.html#inheritance-tableperclass