问题标签 [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.
ruby-on-rails - rails 4 什么时候需要“inverse_of”?
我第一次使用 rails 4 开发一个网络应用程序。我正在使我的所有模型关联都是双向的,并在允许的任何地方使用 inverse_of。
通过阅读文档,我产生了这样一种印象,即这可能是最佳实践,但从来没有在任何地方真正清楚地说明过。
对于经验丰富的 Rails 开发人员在这方面的任何一般性建议,我将不胜感激。我希望这个问题不是太模糊,在这里没有价值。
谢谢!
更新:除了非标准名称外,似乎还有两种主要的额外情况需要明确设置 inverse_of:
- 对于 INVALID_AUTOMATIC_INVERSE_OPTIONS ( http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection )
- 如果您接受嵌套属性 - 这是因为父对象尚未保存,因此没有 id。请参阅http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations
mysql - 一对多双向映射抱怨没有默认值错误
我有两个实体类。
公共类员工{
}
公共类技能{
}
当它们都是 UNI-Directional 时,我可以保存与技能相关的员工对象。
现在,当我尝试使其成为双向时,我收到 sql 错误说Field 'skill_id' doesn't have a default value
我不知道我在哪里做错了。你能指出来吗?
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_id
和to_id
,但这是不可取的。我更希望一个 belongsToMany 关联考虑from_id
asforeignKey
和to_id
as targetForeignKey
,反之亦然。
如何实现双向的 belongsToMany 自关联?
一个例子
考虑以下类似图的网络:
每个点都有一个id
可能还有一些附加信息(如标题或坐标)并存储在 table 中entities
。
现在可以使用表格来表示点之间的连接links
:
请注意,每个连接只存在一次,1-2 也可以像 2-1 一样存储,从到到的方向无关紧要。
现在,如果我想让所有节点都连接到节点 1,我可以使用以下查询:
看看这有多容易?我只需要确保检查两个方向,因为连接是双向的。
我希望在 CakePHP 中映射这个关联。我知道这很可能目前是不可能的,这就是我在 CakePHP github 中打开一个问题的原因。
java - 如何双向绑定通过给定变换及其逆相关的两个 DoubleProperties
给定两个属性,例如
并给定两个互为逆的函数,例如
双向绑定属性x
并y
使其保留定义的关系的最简单方法是什么?
(即如果我们分配给x
theny
应该自动成为xToY.apply(x.get())
,如果我们分配给y
thenx
应该自动成为yToX.apply(y.get())
。)
绑定 API 中有没有办法做到这一点?
hibernate - 休眠多对多关系是否必须使用 @ManyToMany 注释并使用连接表?
我在谷歌上搜索了很多与 Hibernate 多对多关系相关的示例。我发现所有帖子在这种关系中都使用了连接表注释(@JoinTable)。
我必须在多对多中使用@JoinTable 吗?
如果是,为什么?
如果没有,我该如何实现这种关系?
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
如何表达(我从未见过另一端带有箭头的聚合线)?
所有这些都以同样的方式适用于作曲吗?
与此稍微相关的另一件事我想知道,非双向关联可以有两个角色吗?
据我所知,这是不可能的,因为非双向关系是当只有一个相关实例知道另一个时的关系,而角色意味着一个实例如何感知另一个实例,所以我们需要两个实例都知道彼此能够扮演两个角色,这是正确的吗?
java - 聚合 + 多重性 UML 说明
我不明白 A 类旁边的空心菱形以及 B 类旁边的多重性意味着 A 类和 B 类之间的关系。有人可以为我澄清一下吗?
json - 使用jacksonMapper时以双向关系丢失子数据
我在双向多对多关系中有两个类,如下所示:
我在我的 DAO 中拨打电话以获取特定的父母。除了父母的详细信息,我想获取父母的孩子。像这样的东西:
但是,当我在业务服务中执行以下操作同时将数据返回到控制器时,父 json 字符串中会省略子级。
所以我删除了父类中的 @JsonIgnore on Child 属性,认为杰克逊可能会理解在写入字符串时不会忽略这些字段,如下所示。但它仍然忽略它们!:(
知道我哪里可能出错了吗?
graph - 在双向关系图中搜索 neo4j.rb 中的第 n 级朋友
我有一个用户类定义如下
我分别创建了 user_id 1 和 2 user1
。user2
然后我使用
user1.followings(rel_length: 2)
. 但结果本身就出来了,user1
因为两者user1
都user2
在互相追随。
我已经尝试过order(:breadth_first)
和其他方法来排除已经访问过的节点。我可能没有做足够的研究,但有人知道怎么做吗?
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 外键的子级?
有什么建议吗?
问候, 安德里亚