У меня есть модель данных, в которой несколько объектов наследуют некоторые общие атрибуты от одной сущности суперкласса. Я использую 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
?