NHibernate 区分连接子类的子类

发布于 2024-10-13 16:27:42 字数 1074 浏览 5 评论 0 原文

这是我的层次结构:

class abstract Entity { /*members*/ } // mapped to entity table
class abstract User : Entity { /*members*/ } // mapped to user table

class Employee : User { /*no members*/ } // no table, discriminator = "E"
class Contractor : User { /*no members*/ } // no table, discriminator = "C"

这是我在两个单独的 hbm 文件中的映射:

<class name="Entity" table="entity" xmlns="urn:nhibernate-mapping-2.2">
  <id name="Id" column="id">
    <generator class="guid.comb" />
  </id>
  <property ... />
</class>

<joined-subclass name="User" extends="Entity" table="user">
  <key column="id" />
  <discriminator column="type" />
  <property ... />
  <subclass name="Employee"   discriminator-value="E" />
  <subclass name="Contractor" discriminator-value="C" />
</joined-subclass>

以下是我得到的异常:

MappingException: XML 验证错误: 命名空间 'urn:nhibernate-mapping-2.2' 中的元素 'joined-subclass' 具有无效的子元素 '命名空间“urn:nhibernate-mapping-2.2”中的鉴别器。

我缺少什么?您不能映射连接子类的可区分子类层次结构吗?

Here's my heirarchy:

class abstract Entity { /*members*/ } // mapped to entity table
class abstract User : Entity { /*members*/ } // mapped to user table

class Employee : User { /*no members*/ } // no table, discriminator = "E"
class Contractor : User { /*no members*/ } // no table, discriminator = "C"

Here's my mappings in two separate hbm files:

<class name="Entity" table="entity" xmlns="urn:nhibernate-mapping-2.2">
  <id name="Id" column="id">
    <generator class="guid.comb" />
  </id>
  <property ... />
</class>

<joined-subclass name="User" extends="Entity" table="user">
  <key column="id" />
  <discriminator column="type" />
  <property ... />
  <subclass name="Employee"   discriminator-value="E" />
  <subclass name="Contractor" discriminator-value="C" />
</joined-subclass>

The following is the exception I get:

MappingException: XML validation error: The element 'joined-subclass' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'discriminator' in namespace 'urn:nhibernate-mapping-2.2'.

What am I missing? Can you not map a discriminated subclass hierarchy of a joined-subclass?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青瓷清茶倾城歌 2024-10-20 16:27:42

您想做的事情目前是不可能的。

检查http://www.nhforge.org/doc/nh/en/ index.html#inheritance 用于允许的构造。

What you want to do is not currently possible.

Check http://www.nhforge.org/doc/nh/en/index.html#inheritance for allowed constructs.

苏别ゝ 2024-10-20 16:27:42

join-subclass 没有鉴别器,因为它位于单独的表中。这就是它知道子类是什么的方式。如果您想使用鉴别器,您将为所有子类使用一张表,并且您将使用 子类映射

joined-subclass doesn't have a discriminator because it's in a separate table. That's how it knows what the subclass is. If you want to use a discriminator you would use one table for all of your subclasses and you would use the subclass mapping

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文