具体的なクラス階層ごとのテーブルを使用してマップする必要がある次の Hibernate マッピングがあります。
<hibernate-mapping package='dao'>
<meta attribute='class-description'></meta>
<class name='PropertyDAO'>
<id name='id' column='id_property'>
<generator class='assigned'/>
</id>
<property name='address' column='address' type='string'/>
<union-subclass name='HouseDAO' table='house'>
<property name='noOfRooms' column='noOfRooms'/>
<property name='totalArea' column='totalArea'/>
<property name='price' column='price'/>
</union-subclass>
<union-subclass name='LandDAO' table='land'>
<property name='area' column='area'/>
<property name='unitPrice' column='unitPrice'/>
</union-subclass>
</class>
</hibernate-mapping>
つまり、データベースには2つのテーブルしかありません:
- 家 (id_property(PK)、住所、noOfRooms、totalArea、価格)
- 土地 (id_property(PK)、住所、面積、単価)
私が理解している限り、この場合、.save() を呼び出す前に ID を明示的に生成する必要があるため、私の質問は次のとおりです。参加すると継続的なドメインを形成します。