簡體   English   中英

每個類層次結構的Nhibernate表

[英]Nhibernate Table per class hierarchy

我試圖添加<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,數組,原始數組,聯接,子類,聯接子類,聯合子類,加載器,sql-insert,sql-update,sql-delete,過濾器,結果集,查詢,sql-query'命名空間為'urn:nhibernate-mapping-2.2'。

為什么?

我沒有關於您的模型和映射的足夠信息,但這似乎是錯誤的。 您應該為每個子類定義一個映射,如下所示:

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

讓我知道它是否有效。

找到了答案:將標簽移動到標簽的正下方和任何標簽之前。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM