在抽象类中声明的Hibernate映射不在子类中继承

时间:2011-08-19 17:55:22

标签: java hibernate

我有一个抽象类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表,这不是我想要的。 那么,是否可以在不必为每个子类定义映射的情况下获得所需的行为?

1 个答案:

答案 0 :(得分:0)

<union-subclass name=”C”>
<property name=”salary” column=”SALARY” />
<property name=”bonus” column=”BONUS” />
</union-subclass>

指定要包含的union子类xml标记内的属性。