TL; DR. Как я могу обеспечить создание схемы Hibernate для создания ограничения внешнего ключа в настройке таблицы за конкретный класс от AbstractProperty.ownerId до Owner.ownerId для структуры, отображаемой ниже, не добавляя свойство Owner к AbstractProperty?
Я работаю над проектом, где у меня есть следующая структура классов:

Owner имеет взаимно однозначное сопоставление с AbstractProperty, которое расширяется классом ConcreteProperty (и другими, такими как AnotherProperty, но это не актуально для остальной части этого вопроса).
AbstractProperty действительно имеет только одно свойство, abstractPropertyId. Поэтому мы хотим использовать структуру table-per-concrete-class, в результате получим таблицы Owner, ConcreteProperty и таблицы для других расширяющих классов AbstractProperty (AnotherProperty).
С этой целью я создал следующее сопоставление для Owner:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example">
<class name="Owner">
<id name="ownerId">
<generator class="identity"/>
</id>
<property name="ownerProperty"/>
<one-to-one name="abstractProperty"/>
</class>
</hibernate-mapping>
И для AbstractProperty:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example">
<class name="AbstractProperty" abstract="true">
<id name="ownerId">
<generator class="foreign">
<param name="property">ownerId</param>
</generator>
</id>
<union-subclass name="ConcreteProperty">
<property name="concreteProperty"/>
</union-subclass>
<union-subclass name="AnotherProperty">
<property name="anotherProperty"/>
</union-subclass>
</class>
</hibernate-mapping>
Это работает.
Однако, и вот мой вопрос, используя это сопоставление и имея Hibernate, создаю схему для меня (<property name="hbm2ddl.auto">create</property>), он не создает ограничение внешнего ключа из поля базы данных ConcreteProperty.ownerId в поле Owner.ownerId. Это происходит, когда я создаю инверсное связанное одно-одно поле от AbstractProperty до Owner, используя это сопоставление для AbstractProperty (где поле Owner имеет тип Owner в классе AbstractProperty java ):
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example">
<class name="AbstractProperty" abstract="true">
<id name="ownerId">
<generator class="foreign">
<param name="property">ownerId</param>
</generator>
</id>
<one-to-one name="owner" constrained="true"/>
<union-subclass name="ConcreteProperty">
<property name="concreteProperty"/>
</union-subclass>
<union-subclass name="AnotherProperty">
<property name="anotherProperty"/>
</union-subclass>
</class>
</hibernate-mapping>
Как я могу принудительно создать внешний ключ от AbstractProperty.ownerId до Owner.ownerId без этого поля Owner в моем AbstractProperty?