Таблица Nhibernate для иерархии классов - PullRequest
0 голосов
/ 02 декабря 2011

Я пытался добавить <discriminator>:

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="X" namespace="X.y">
     <class name="RawAttachment" table="Metadata_Attachment">
        <id name="AttachmentId">
          <generator class="guid" />
        </id>
        <discriminator column="PAYMENT_TYPE" type="String"/> 
  <subclass
    name="Attachment"
    discriminator-value="Cash">
     <property name="LocationId"/>
   </subclass>

но получил следующую ошибку:

Элемент 'class' в пространстве имен 'urn: nhibernate-mapping-2.2' имеет недопустимый дочерний элемент «дискриминатор» в пространстве имен 'Урна: NHibernate-отображение-2,2'. Список возможных ожидаемых элементов: 'свойство, многие к одному, один к одному, компонент, динамический компонент, свойства, любые, карта, набор, список, сумка, idbag, массив, примитив-массив, объединение, подкласс, объединенный подкласс, объединенный подкласс, загрузчик, sql-вставка, sql-update, sql-delete, фильтр, набор результатов, запрос, sql-query 'in пространство имен 'urn: nhibernate-mapping-2.2'.

почему

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

нашел ответ: переместите тег прямо под тегом и перед любыми тегами.

https://forum.hibernate.org/viewtopic.php?p=2368742&sid=3af1d42a54dc239c8287f2bcec2d1412

0 голосов
/ 02 декабря 2011

У меня недостаточно информации о вашей модели и сопоставлениях, но, похоже, это неправильно.Вы должны определить отображение для каждого подкласса, что-то вроде этого:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="X"
namespace="X">
<class name="RawAttachment">
<id name="AttachmentId">
<generator class="guid.comb" />
</id>
<discriminator column="PAYMENT_TYPE" />
<property name="Prop1" />
<property name="Prop2" not-null="true" />
</class>
</hibernate-mapping>

И подкласс RawAttachment

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="X"
namespace="X">
<subclass name="RawAttachmentSub" extends="RawAttachment">
<property name="OtherProp"/>
<property name="OtherProp2"/>
</subclass>
</hibernate-mapping>

Дайте мне знать, если он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...