Подкласс 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#?

Также в вашем вопросе я бы перечислил конкретные поля, о которых вы говорите, чтобы не было путаницы, и разместил код для ваших объектов, которые связаны с этим отображением.

Другие вопросы по тегам