【问题标题】:NHibernate: (one or zero) to (one or zero) mappingNHibernate:(一或零)到(一或零)映射
【发布时间】:2012-06-26 04:50:18
【问题描述】:

我有两个实体,FooBar,如下所示:

public class Foo
{
    public virtual Guid FooID { get; set; }
    public virtual Bar MyBar { get; set; }
}

public class Bar
{
    public virtual Guid BarID { get; set; }
    public virtual Foo MyFoo { get; set; }
}

这两个实体可以相互独立存在,但有时它们是相关的,当这种情况发生时,我想确保它们在持久层中链接。

我希望我的表格如下所示:

create table Foo (
    FooID int primary key,
    -- other stuff
);

create table Bar (
    BarID int primary key,
    FooID int null references Foo(FooID) on delete no action on update no action
);

...并且 NHibernate 能够创建它们之间的关系。

我将如何映射它(首选 XML)?

【问题讨论】:

  • @JBNizet,您是否考虑过在否决之前阅读我的问题?这不是我想要的。
  • 您在问如何创建由外键映射的双向 OneToOne 关联,这就是链接文档的说明。
  • 开始结束?现实点。如果您有时间这样做,那么您将拥有更多的权力,但是我在一个周日的晚上工作,拼命地试图让这个项目运作起来。如果搜索没有找到我正在寻找的东西,SO 可以提供帮助,并且下次有人以同样的方式寻找东西时,他们将不必经历我所做的痛苦。
  • @JBNizet 我觉得你的态度很糟糕。你扔掉一个带有尖刻评论的链接,并期望这个人对你赞不绝口?不要将此评论视为讽刺或冒犯,但你没有充分学会基本礼貌这一事实很可能解释为什么你误导完全合法的提问者,尽管你如此特殊和闪亮的“金冬眠徽章” .全世界都为你如此了解 Hibernate 而欣喜若狂(显然是在你一天的“体面”培训之后)。但他们并不高兴你对问题发表评论。很明显。
  • @JBNizet 其实我并没有听起来那么疯狂。我只是想配合你的语气!如果您不喜欢它,请考虑您正在照镜子。你自己“突然冒出来”并“侮辱了一个你从未与之交谈过的人”!无论如何,我祝你一切顺利!新年快乐。复活节快乐。健康长寿·繁荣昌盛。但是,仅仅因为某些事情 对你来说非常清楚,并不要求对诚实的提问者居高临下。

标签: hibernate nhibernate nhibernate-mapping hibernate-mapping


【解决方案1】:

所以@JBNizet 以他讽刺和讽刺的方式指出,就 Hibernate 和 NHibernate 而言,零或一到零或一的关系被认为是可以为空的双向一对一关系;因此,根据http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#assoc-bidirectional-121,映射将是这样的:

<class name="Foo">
    <id name="FooID" column="FooID">
        <generator class="guid" />
    </id>
    <one-to-one name="MyBar" property-ref="MyFoo" />
</class>

<class name="Bar">
    <id name="BarID" column="BarID">
        <generator class="guid" />
    </id>
    <many-to-one name="MyFoo" column="FooID" unique="true" not-null="false" />
</class>

(...我认为。欢迎进行澄清的编辑。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 2017-03-12
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多