我有以下映射文件。
<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的对象时,它引发了下面的异常字段‘鉴别器’没有默认值。
上面的映射有什么问题?
发布于 2013-05-22 21:00:01
您需要将discriminator-value="YOUR_CUSTOM_SUBCLASS_DISCRIMINATOR_VALUE“添加到通过使用鉴别器彼此区分的所有类标记中(因此它们被映射到同一个表中)。否则,hibernate不知道使用哪个鉴别器值来区分它们。
但是,我不认为使用使用鉴别器的子类来扩展联合子类是可能的-要么必须为您的类TWOSUB使用另一个联合子类,要么根本不使用联合子类来从一个继承两个。至少联合子类标签没有鉴别器-值属性,因此不可能区分TWO和TWOSUB。
https://stackoverflow.com/questions/15787326
复制相似问题