问题标签 [one-to-one]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
41657 浏览

python - Django Admin:OneToOne 关系作为内联?

我正在为一个 satchmo 应用程序组合管理员。Satchmo 使用 OneToOne 关系来扩展基本Product模型,我想在一页上对其进行编辑。

可以将 OneToOne 关系作为内联吗?如果没有,将一些字段添加到我的管理员的给定页面最终将保存到 OneToOne 关系中的最佳方法是什么?

例如:

我为我的管理员尝试了这个,但它不起作用,并且似乎需要一个外键:

引发此错误:<class 'satchmo.product.models.Product'> has no ForeignKey to <class 'my_app.models.MyProduct'>

这样做的唯一方法是自定义表单吗?

编辑:刚刚尝试以下代码直接添加字段......也不起作用:

0 投票
1 回答
964 浏览

one-to-one - Castle ActiveRecord OneToOne 和 JoinedBase/Key 一起,没有创建 SQL 关系

我想模拟以下关系。

这一切都形成了主类继承......基本形式,然后是一些特定的形式..TerminationForm,另一种形式......等等......

然后我打算在每个子表单上挂一些其他的表单部分。我将这些子表单建模为 [OneToOne]

即,如果 TerminationForm 类似于上面的 FormOne..我在它下面有“Staffing”..这是链接..及其互惠链接(注意...我也将一些 Staffing 属性提取到一个抽象基础中,因为我有TerminationStaffing 和 LeaveStaffing)

当 AR 创建架构时..它通过限制其主键的关系将 TerminationForm 与 MasterForm 正确关联...

但是,即使 TerminationStaffing 表包含 MasterFormId,我也没有看到创建的关系。我应该担心这个吗?也许我可以在之后添加它,但我很惊讶。

我考虑过在 TerminationStaffing 上使用 [BelongsTo],但是 TerminationForm 中的关系是什么(关系是一对一的.. 不是一对多的)

我离基地很远吗?

0 投票
2 回答
7345 浏览

hibernate - Hibernate 一对一实体关联与 3 个类之间的共享 PK

我想要 3 个 java 类的对象之间的单向一对一关系:Person to Heart 和 Person to Liver。我希望对象共享相同的 PK,即每个人都有相应的心脏和肝脏,其中 person.person_id = heart.heart_id =liver.liver_id。我不想将 3 个表合并为 1 个,因为每个表都有很多字段。这是我的代码(主要基于这个问题的公认答案):

我设置会话并执行以下操作:

然后,如果我将 person 对象与它的器官链接起来并保存它,我会收到一个错误(注意:当我只使用 2 个类时,我得到了相同的行为,例如 Person 和 Heart):

org.hibernate.id.IdentifierGenerationException:试图从 null 一对一属性分配 id:person

但是,如果我以两种方式设置关系,它就会起作用:

但是对于单向关系,这肯定不是必需的吗?
干杯

附言。奇怪的是,当我只使用 2 个类(例如 Person 和 Heart)时,我注意到它可以工作(将两个对象都保存到 DB),而我只是以另一种方式设置链接:

我不知道为什么会这样(在我看来,Person 是父对象是合乎逻辑的,因为它会自动生成它自己的 PK,而其他人使用它;所以这就是你应该设置的全部),但无论如何我不知道了解如何将这种工作方法应用于我的 3 类情况......

0 投票
2 回答
287 浏览

nhibernate - 是否可以使用 JoinedBase 保持与类层次结构的 OneToOne 关系?

我希望我的一个实体与类层次结构具有一对一的关系。把它想象成一个策略模式,每个策略都需要不同的参数来持久化。我尝试使用OneToOneand JoinedBase/的组合JoinedKey,但我遇到了一个问题。

使用这种组合,主实体的主键也作为代表层次结构中根类的表的主键出现,并作为子类的主键出现:

我可以坚持这一点,但是我无法更改TaxCalculator我拥有的子类。当我做类似的事情时:

然后尝试刷新,然后 ActiveRecord/NHibernate(可以理解)对现在有TaxCalculators两个Id = 1234.

我可以通过用 / 替换 来解决这个OneToOne问题HasManyBelongsTo并向对象的用户隐藏多重性Order,但我很想知道是否可以用OneToOne.

github 上有完整的代码示例。当第二个被释放时,此代码会引发异常SessionScope。如果您克隆项目,它应该是开箱即用的。

0 投票
2 回答
2404 浏览

linq-to-sql - Linq 2 SQL One to Zero or One relationship possible?

Is it possible to create a one to zero or one relationship in Linq2SQL?

My understanding is that to create a one to one relationship you create a FK relationship on the PK of each table.

But you cannot make the PK nullable, so I don't see how to make a one to zero or one relationship work?

I'm using the designer to automatically create the model - so I would like to know how to set up the SQL tables to induce the relationship - not some custom ORM code.

0 投票
2 回答
137 浏览

python - 我应该如何构建这个 Django 模型来做我想做的事

这是我以前的(但意识到你显然不能按这个顺序做:

我想你可以从这个例子中看到我想要做什么。我想要一个 MasterAccountAdmin,它共享来自 AccountAdmin 的属性。目的是我想让人们能够删除 AccountAdmin,而不是 MasterAccountAdmin。我不想只在 AccountAdmin 上有一个名为“master = models.BooleanField()”的属性。

显然这个例子不起作用,因为 MasterAdmin 在创建之前引用了 AccountAdmin,但我想展示我想要实现的目标。我想这一切都错了吗?

0 投票
2 回答
285 浏览

django - Django:如何定义模型关系以实现以下功能?:

我的应用程序有客户端,每个客户端都有一个计费配置文件。

我设想我的应用程序有一个“客户端”模型,该模型具有一个名为“ billing_profile ”的属性,该属性将引用另一个名为“ BillingProfile ”的模型。与其定义“ BillingProfile ”,外键返回“Client”(即“ client = models.ForeignKey(Client) ”),我在想,因为每个客户只有一个计费配置文件,我可以简单地使用一个一对一的字段。这看起来合乎逻辑,还是看起来倒退(然后我必须在建立客户端之前创建一个 BillingProfile)。与我的理解范式相比,有没有一种好的方法可以做到这一点?

0 投票
2 回答
783 浏览

ruby-on-rails - ActiveRecord has_one 关系在某些情况下不返回

给定三个相互嵌套的模型。如果我创建顶级对象并 build_* 其他子对象,我可以通过原始实例上的 save() 之前和之后的关系检索所有子对象。但是,如果我尝试在 find(:id) 原始父对象之后检索第二级嵌套对象,它将失败。但是,我可以检索第一级嵌套对象。这通常发生在控制器中,但我将在下面的控制台输出中说明它。

我在看什么?

提前致谢!
~jpv

下面的所有样板文件:

适当的外键位于每个“belongs_to”类中。

0 投票
2 回答
1607 浏览

nhibernate - 使用 Fluent NHibernate 删除一对一关系中的实体时的级联问题

我有以下数据库表,我为此示例进行了简化:

网页ID、URLIdentifier

WebpageMetaData Webpage_id 关键字

webpage_id 是表的主键和返回网页表的外键。

然后我使用 Fluent NHibernate 及其自动映射功能将这些映射到以下 POCO 类:

}

}

我想将这些实体映射为一对一,因此我覆盖了自动映射,如下所示:

我已经测试了这些映射和级联规则,它们适用于选择、插入和更新。但是,当我执行 WebpageMetaData 的删除时,我得到一个异常说

“已删除的对象将被级联重新保存(从关联中删除已删除的对象)[WebpageMetaData#524]”

停止异常的唯一方法是在保存之前执行以下操作:

所以我必须从我的父母那里为自己设置一个空引用??!这似乎是错误的?我的映射错了吗?

谢谢。

更新 1: 请查看 Fluent 生成的 NH 映射,以防这对核心 NHibernator 有帮助:)

0 投票
4 回答
15591 浏览

fluent-nhibernate - 流畅的 NHibernate 和一对一

很长一段时间以来,我一直在寻找有关如何使用 Fluent NHibernate正确实现一对一映射的示例。

我发现的大多数资源都说:

我想你的意思是多对一

但是,实际上没有人给出如何正确实现一对一关系的示例。

那么,您能否给出一个使用 Fluent NHibernate 的一对一映射示例

注意:我对人们说“你的模型是什么,你实际上可能需要HasMany ”不感兴趣。不,谢谢,我只需要一个一对一的例子。

更准确地说,我知道语法。这是我唯一能通过自己搜索找到的东西。我正在寻找的是一个更完整的例子,包括一个((非常)简单的)数据库设置,以及参与关系的所有实体的整个映射,我认为对于 Stack Overflow 来说,它的大小是合理的。