Hibernate 异常字段';鉴别器';不';没有默认值

Hibernate 异常字段';鉴别器';不';没有默认值,hibernate,Hibernate,我有以下映射文件 <hibernate-mapping> <class name="One" abstract="true"> <id name="id" type="long" column="ID"> <generator class="assigned"/> </id> <discriminator column="DISCRIMINATOR" type

我有以下映射文件

<hibernate-mapping>
<class name="One" abstract="true">
       <id name="id" type="long" column="ID">
            <generator class="assigned"/>
        </id>
         <discriminator column="DISCRIMINATOR" type="string" />

        <union-subclass name="Two" table="TWO">
        .
        .
        </union-subclass>
        <union-subclass name="Three" table="THREE">
        .
        .
        </union-subclass>
</class>
</hibernate-mapping>

<hibernate-mapping>
    <subclass name="TWOSUB" extends="TWO">
        .
        .
    </subclass>
</hibernate-mapping>

.
.
.
.
.
.
当我尝试添加TWOSUB的对象时,它会引发以下异常 字段“鉴别器”没有默认值


上面的映射有什么问题?

您需要将discriminator value=“YOUR\u CUSTOM\u SUBCLASS\u discriminator\u value”添加到通过使用discriminator相互区分的所有类标记中(因此映射到同一个表中)。否则,hibernate不知道使用哪个鉴别器值来区分它们

然而,我认为不可能用使用鉴别器的子类来扩展一个联合子类——要么必须为类TWOSUB使用另一个联合子类,要么根本不使用联合子类从一个继承两个。至少union子类标记没有鉴别器值属性,因此无法区分TWO和TWOSUB。

您尝试过吗?