Прежде всего, вы не обязаны создавать свои таблицы в Hibernate. Вы можете использовать собственный скрипт SQL.
Теперь наличие такой структуры базы данных не очень чисто, потому что вы не можете применить какое-либо ограничение внешнего ключа для столбца container_id.
Я бы либо использовал два столбца (group_id и project_id) в таблице блога, либо использовал две таблицы объединения (group_blogs и project_blogs). Это сделало бы Hibernate счастливым и улучшило бы базу данных.
Если вы беспокоитесь о том, что этот дизайн может позволить блогу принадлежать группе и проекту, то используйте проверочное ограничение для таблицы блога, гарантирующее, что group_id или project_id имеет значение null. Однако сложнее сделать это с двумя таблицами соединения.
Тем не менее, если вы действительно хотите сохранить этот дизайн, я думаю, что ключ заключается в том, чтобы использовать аннотацию @Any
для отображения обратных отношений (от блога до группы / проекта).