Подкласс nhibernate - нулевой указатель в неиспользуемом столбце вместо нулевого
У меня проблема с двумя подклассами, использующими одну и ту же таблицу и одинаковые поля. Несмотря на то, что сгенерированная таблица имеет эти поля в качестве обнуляемых уникальных идентификаторов, когда я сохраняю одну запись, которая не использует третий столбец, созданное поле имеет значение "000000000-0000-0000-0000-000000000000" вместо NULL. Другие части приложения требуют, чтобы это место было нулевым. Вот код В чем дело?
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly=".."
namespace="...">
<class name="TEST" table="..." discriminator-value="not null">
<id name="Id" column="tID">
<generator class="assigned" />
</id>
<discriminator column="iTestTypeID" type="Int32" not-null="true"/>
<property name="TotalScore" column="fTotalScore"/>
<property name="IsTimedOut" column="bTimedOut"/>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly=".."
namespace="...">
<subclass name="TestA" extends="TEST" discriminator-value="3">
<many-to-one name="Department" column="uTestCriteria01" cascade="save-update" not-null="false" />
<many-to-one name="Building" column="uTestCriteria02" cascade="save-update" not-null="false" />
</subclass>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly=".."
namespace="...">
<subclass name="TestB" extends="TEST" discriminator-value="3">
<many-to-one name="Building" column="uTestCriteria01" cascade="save-update" not-null="false" />
<many-to-one name="Floor" column="uTestCriteria02" cascade="save-update" not-null="false" />
<many-to-one name="Room" column="uTestCriteria03" cascade="save-update" not-null="false" />
</subclass>
</hibernate-mapping>
1 ответ
Я предполагаю, что ваши объекты не используют обнуляемые типы.
У вас есть типы, определенные следующим образом:
public class A
{
public Guid? field { get; set; }
}
Взгляните на эту статью Stackru для объяснения:
Как я могу по умолчанию параметр Guid.Empty в C#?
Также в вашем вопросе я бы перечислил конкретные поля, о которых вы говорите, чтобы не было путаницы, и разместил код для ваших объектов, которые связаны с этим отображением.