我有一个抽象类A和两个实现A的类B和C.
abstract class A implements Serializable {
Long id
String code
String description
Map<Locale, String> localizedDescriptions
}
class B implements A {}
class C implements A {}
使用以下hibernate映射:
<class name="A" abstract="true">
<id name="id">
<generator class="org.hibernate.id.enhanced.TableGenerator"/>
</id>
<property name="code" unique="true" not-null="true"/>
<property name="description" not-null="true"/>
<map name="localizedDescriptions" lazy="false">
<key property-ref="code" column="code"/>
<index column="locale" type="locale"/>
<element column="description" type="string" not-null="true"/>
</map>
<union-subclass name="B"/>
<union-subclass name="C"/>
我得到的B和C数据库表具有预期的字段id,代码和描述。但是没有b_localized_descriptions或c_localized_descriptions表,但是有一个a_localized_descriptions表,这不是我想要的。 那么,是否可以在不必为每个子类定义映射的情况下获得所需的行为?
答案 0 :(得分:0)
<union-subclass name=”C”>
<property name=”salary” column=”SALARY” />
<property name=”bonus” column=”BONUS” />
</union-subclass>
指定要包含的union子类xml标记内的属性。