首页 文章

每个类层次结构的Nhibernate表

提问于
浏览
0

我试着添加 <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>

但得到以下错误:

命名空间'urn:nhibernate-mapping-2.2'中的元素'class'在命名空间'urn:nhibernate-mapping-2.2'中具有无效的子元素'discriminator' . 预期可能元素的列表:'属性,多对一,一对一,组件,动态组件,属性,任何,映射,集合,列表,包,idbag,数组,原始数组,连接,子类,join-subclass,union-subclass,loader,sql-insert,sql-update,sql-delete,filter,resultset,query,sql-query'innamespace'瓮:nhibernate-mapping-2.2' .

为什么?

2 回答

  • 0

    我没有足够的有关您的模型和映射的信息,但似乎是错误的 . 您应该为每个子类定义一个映射,如下所示:

    <?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>
    

    如果有效,请告诉我 .

  • 0

    找到答案:将标签直接移动到标签下方和任何标签之前 .

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

相关问题