问题标签 [bidirectional-relation]

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 投票
1 回答
1270 浏览

ruby-on-rails - rails 4 什么时候需要“inverse_of”?

我第一次使用 rails 4 开发一个网络应用程序。我正在使我的所有模型关联都是双向的,并在允许的任何地方使用 inverse_of。

通过阅读文档,我产生了这样一种印象,即这可能是最佳实践,但从来没有在任何地方真正清楚地说明过。

对于经验丰富的 Rails 开发人员在这方面的任何一般性建议,我将不胜感激。我希望这个问题不是太模糊,在这里没有价值。

谢谢!

更新:除了非标准名称外,似乎还有两种主要的额外情况需要明确设置 inverse_of:

  1. 对于 INVALID_AUTOMATIC_INVERSE_OPTIONS ( http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection )
  2. 如果您接受嵌套属性 - 这是因为父对象尚未保存,因此没有 id。请参阅http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations
0 投票
1 回答
268 浏览

mysql - 一对多双向映射抱怨没有默认值错误

我有两个实体类。

公共类员工{

}

公共类技能{

}

当它们都是 UNI-Directional 时,我可以保存与技能相关的员工对象。

现在,当我尝试使其成为双向时,我收到 sql 错误说Field 'skill_id' doesn't have a default value

我不知道我在哪里做错了。你能指出来吗?

0 投票
1 回答
395 浏览

cakephp - 同一模型上的双向 belongsToMany 关联

EntitiesTable与自身有一个 belongsToMany 关联:

然而,这种关联只在一个方向上起作用。当表links只包含一个条目[from_id: 1, to_id: 2]时,$this->Entities->findById(1)->contain('LinkedEntities')正确地获取链接的实体,但$this->Entities->findById(2)->contain('LinkedEntities')没有。

一种解决方案是复制表中的每个条目links并交换from_idto_id,但这是不可取的。我更希望一个 belongsToMany 关联考虑from_idasforeignKeyto_idas targetForeignKey,反之亦然。

如何实现双向的 belongsToMany 自关联?

一个例子

考虑以下类似图的网络:

图形

每个点都有一个id可能还有一些附加信息(如标题或坐标)并存储在 table 中entities

现在可以使用表格来表示点之间的连接links

请注意,每个连接只存在一次,1-2 也可以像 2-1 一样存储,从到到的方向无关紧要。

现在,如果我想让所有节点都连接到节点 1,我可以使用以下查询:

看看这有多容易?我只需要确保检查两个方向,因为连接是双向的。

我希望在 CakePHP 中映射这个关联。我知道这很可能目前是不可能的,这就是我在 CakePHP github 中打开一个问题的原因。

0 投票
0 回答
53 浏览

java - 如何双向绑定通过给定变换及其逆相关的两个 DoubleProperties

给定两个属性,例如

并给定两个互为逆的函数,例如

双向绑定属性xy使其保留定义的关系的最简单方法是什么?

(即如果我们分配给xtheny应该自动成为xToY.apply(x.get()),如果我们分配给ythenx应该自动成为yToX.apply(y.get())。)

绑定 API 中有没有办法做到这一点?

0 投票
1 回答
486 浏览

hibernate - 休眠多对多关系是否必须使用 @ManyToMany 注释并使用连接表?

我在谷歌上搜索了很多与 Hibernate 多对多关系相关的示例。我发现所有帖子在这种关系中都使用了连接表注释(@JoinTable)。

我必须在多对多中使用@JoinTable 吗?

如果是,为什么?

如果没有,我该如何实现这种关系?

0 投票
1 回答
538 浏览

uml - UML中双向关系的特点?

考虑一下:

在此处输入图像描述

据我所知,情况 1与 1a相关b,并且a知道b因此a能够向 发送消息b,但b不知道a因此b无法向 发送消息a

另一方面,如果情况 2a与 相关b,并且双方都知道对方,则双方都可以向对方发送消息。

但我的问题是,当关系不是关联而是聚合时怎么办?聚合关系是否可以在 UML 中具有双向导航性,以便两个实例相互了解?

万一a拥有b,因而a知晓b。(换句话说a,能够向 发送消息b)。但反过来呢,b知道a吗?还是永远不会是这样?或者这只是没有在图中指定,这可能是两种方式?并且,如果b必须知道a如何表达(我从未见过另一端带有箭头的聚合线)?

所有这些都以同样的方式适用于作曲吗?

与此稍微相关的另一件事我想知道,非双向关联可以有两个角色吗?

据我所知,这是不可能的,因为非双向关系是当只有一个相关实例知道另一个时的关系,而角色意味着一个实例如何感知另一个实例,所以我们需要两个实例都知道彼此能够扮演两个角色,这是正确的吗?

0 投票
1 回答
738 浏览

java - 聚合 + 多重性 UML 说明

UML:聚合+多重性

我不明白 A 类旁边的空心菱形以及 B 类旁边的多重性意味着 A 类和 B 类之间的关系。有人可以为我澄清一下吗?

0 投票
1 回答
1699 浏览

json - 使用jacksonMapper时以双向关系丢失子数据

我在双向多对多关系中有两个类,如下所示:

我在我的 DAO 中拨打电话以获取特定的父母。除了父母的详细信息,我想获取父母的孩子。像这样的东西:

但是,当我在业务服务中执行以下操作同时将数据返回到控制器时,父 json 字符串中会省略子级。

所以我删除了父类中的 @JsonIgnore on Child 属性,认为杰克逊可能会理解在写入字符串时不会忽略这些字段,如下所示。但它仍然忽略它们!:(

知道我哪里可能出错了吗?

0 投票
1 回答
80 浏览

graph - 在双向关系图中搜索 neo4j.rb 中的第 n 级朋友

我有一个用户类定义如下

我分别创建了 user_id 1 和 2 user1user2

然后我使用 user1.followings(rel_length: 2). 但结果本身就出来了,user1因为两者user1user2在互相追随。

我已经尝试过order(:breadth_first)和其他方法来排除已经访问过的节点。我可能没有做足够的研究,但有人知道怎么做吗?

0 投票
3 回答
1758 浏览

hibernate - 使用非空外键将父实体和子实体同时保存到父实体(Spring JPA / Hibernate)

我在 MySQL 数据库中有两个实体,我想实现双向映射,在保存新父项时自动保存新子项。

MACCHINA(父)字段:id、marca

PERSONA(子)字段:id、name、macchina_id(外键 NOT NULL)

当我保存一个新的 MACCHINA 时,我还想通过这个 JSON 保存一个新的 PERSONA:

MACCHINA实体:

PERSONA 实体:

在这种情况下,当我在 Macchina 实体上调用 JPA 存储库方法 .save() 时,我遇到了例外:

在同样的场景中,我尝试在数据库中删除 Persona 表中字段“macchina_id”的 NotNull 约束;在这种情况下,事务已执行,但 Persona 表中的“macchina_id”字段为 NULL。

我找到了一种解决方法,方法是删除数据库中“macchina_id”的 NotNull 约束(以及实体中的注释),并以这种方式修改从父级到子级的映射:

我删除了“mappedBy”并添加了@JoinColumn。它以这种方式工作:Hibernate 在 Macchina 中执行插入,在 Persona 中执行插入,最后在 Persona 中执行更新(我猜是编写/更新 macchina_id 字段)。

我的目标是维护数据库中字段“macchina_id”的 NotNull 属性;在映射字段上的子实体中保留一些属性值,private Macchina macchina;例如 @NotNull / nullable = false / @ManyToOne(optional = false) 并使用 Spring/Hibernate 自动验证的“macchina_id”字段同时保存两个实体,无需手写代码。

那么,有一种自动方式(Spring/Hibernate)首先保存父级,然后是对父级有 NotNull 外键的子级?

有什么建议吗?

问候, 安德里亚