У меня есть модель данных, в которой несколько объектов наследуют некоторые общие атрибуты от одного объекта суперкласса. Я использую InheritanceType.JOINED
в суперклассе, что заставляет Hibernate создавать единую таблицу для атрибутов, определенных в суперклассе, с таблицами подкласса, содержащими только столбцы, которые добавляются подклассом (поэтому для загрузки атрибутов для экземпляра подкласса выполняется соединение между двумя столами). То все нормально работает.
Однако я хотел бы указать уникальное ограничение, включающее поля как в таблицах подкласса, так и в таблицах суперкласса. Например, скажем, что мой объект суперкласса выглядит примерно так:
Thing: {id, name}
... и затем у меня есть некоторые объекты подкласса, такие как:
Company: {address} //inherits 'id' and 'name' from 'Thing'
Employee: {company} //inherits 'id' and 'name' from 'Thing'
... и я хочу настроить Hibernate для автоматического обеспечения того, чтобы у данного Company
не было двух Employee
с одинаковым именем. Поле company
находится в таблице Employee
, но поле name
находится в таблице Thing
, поэтому есть ли способ заставить Hibernate применять это ограничение, или мне нужно делать это программно всякий раз, когда я добавляю новый Employee
?