问题标签 [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 回答
160 浏览

neo4j - 从 Neo4j 中的双向关系查询单个关系

重叠的双向关系

是否可以从双向关系中只显示一个方向关系?

(n)-[:EMAIL_LINK]->(m)

(n)<-[:EMAIL_LINK]-(m)

0 投票
0 回答
878 浏览

java - Hibernate双向映射,保存child不更新parent

第一个断言语句通过,但第二个没有。单步执行代码,每次提交时都会正确更新数据库。但是,当次要实体对象更新时,主要实体似乎不会更新。

我尝试了一些不成功的解决方案,例如将 CascadeType.All 添加到 @OneToMany 注释,并刷新会话。次要实体保存并更改数据库后,如何更新主要实体?

我的实体类看起来像:

0 投票
2 回答
1563 浏览

dependencies - 可以在 UML 类图中使用双向依赖吗?

我有 2 个类,它们更复杂,但这并不重要。我应该如何在 UML 类图中绘制这种依赖关系?我不确定它应该是什么样子

我可以画这样的东西吗?或者它应该是什么样子? 在此处输入图像描述

0 投票
1 回答
95 浏览

grails - 抽象类中的grails双向关系

我正在尝试使用抽象类定义 Grails 域模型。我需要定义两个彼此具有一对一双向关系并且不能使它们工作的抽象类。

基于文档的 Face-Nose 示例的解释:

我实现了该示例并编写了一个按预期工作的测试:如果我设置关系的一端,grails 设置另一端。

如果我将这两个类声明为抽象类并使用两个具体子类(没有任何属性的 ConcreteFace 和 ConcreteNose)重复相同的测试,则第二个断言为假:testNose.face 为空。

我做错了吗?如果不是,我如何分解抽象域类中的关系?

0 投票
2 回答
1268 浏览

java - 将新持久化的实体添加到关系反向方持有的实体列表中,以保持双向关系

给定两个实体Department并形成从到Employee的一对多关系。DepartmentEmployee

由于关系非常直观,因此我省略了实体类。

下面的代码段,只是持久化了一个实体Employee

以下方法返回与特定部门关联的员工列表。

这两种方法都是使用名为 let's say 的 CMT(此处不是 BMT)在无状态 EJB 中编写的 EmployeeService

客户端应用程序按顺序调用这些方法,如下所示,

上面循环中的sout语句显示了一个新添加的实体,其中包含一个,因为该行不存在于第一个代码片段中。foreachEmployeeList<Employee>Departmentnull employeeIdentityManager.flush();


EntityManager#persist(Object entity)不保证生成id。id 只保证在刷新时生成。

发生的情况是,如果entityManager.flush();被删除/注释,则实体Employee将添加到Employees ( List<Employee> employeeList) 列表中,其中包含null标识符(基础数据库表中的主键列)。

维持双向关系的常用方法是什么?EntityManager#flush();每次将实体添加到由关系的反面维护的实体集合以生成与新持久化实体相关联的 id 时,是否总是需要?

此外,在删除实体(使用)时是否总是需要手动删除Employeefrom List<Employee>(由关系的反面维护 - )?DepartmentEmployeeentityManager.remove(employee);


编辑:实体类:

部门 :

员工 :

0 投票
1 回答
1177 浏览

java - 在 Restful-WebService 响应中包含所有 @OneToMany 实体?

第一次在这里发帖,所以请原谅任何愚蠢的方法来最好地引起你的注意/帮助我找到答案。:)

无需过多介绍我的实际程序:

我有一个用户可以注册许多设备,这些设备可以与许多遥控器相关联,这些遥控器可以有许多按钮(命令(准确地说是 LIRC 命令))。

这是我的 4 个实体的@ManyToOne@OneToMany部分的代码。

用户

设备

遥控器

命令

它们都工作正常,数据库条目都有适当的外键,如果我理解正确,这应该是双向的。

我的问题:

有没有办法让我的 Restful Webservice Request 响应用户的 findAll() ,不仅响应用户,还响应来自设备的所有数据,依次返回所有设备的远程和属于远程的命令

如果需要,我将不得不遍历所有实体并自己修补一个 JSON,但在我开始这段旅程之前,我想知道是否有更简单的方法来解决我的问题。

干杯

0 投票
1 回答
920 浏览

java - Java 对象序列化和转换为 JSON

我有一个 Java 对象。它有许多引用其他不同类型 Java 对象的字段,有时还引用它自己。这个对象可以最好地描述为具有双向引用(或循环)的地图(或图形)。我无权分析其结构,但为了解决问题,我必须序列化此图并将其存储在 JSON 字符串中。

事实上,我无法真正了解对象的结构,使用库类是我唯一的选择(据我所知)。我尝试过 json-io、json-lib、google genson、gson 和 flexjson。但是所有这些库要么因为循环的存在而卡住并抛出异常,要么能够返回一个 json(只有 json-io 这样做)但是跳过了很多重要的字段(那些是延迟加载的) ,并且需要吸气剂)。

问题:为了解决我的问题,在测试上面列出的库时,是否存在我可能遗漏的东西?

我拥有的 Java 对象非常复杂,但我不希望它像 facebook 这样的大型网站可能使用的对象那样复杂。有哪些关键库及其特定配置可用于解决我的问题?

0 投票
1 回答
2437 浏览

hibernate - JPA 中的双向关系

我错过了一些非常基本的东西。给定以下两个实体Department(反向方)和(拥有方)形成从到Employee的一对多关系。DepartmentEmployee

部门.java

雇员.java

下面给出了无状态 EJB(使用 CMT)中的一些方法,它们分别执行持久化、合并和删除操作。

这些方法由关联的应用程序客户端在非事务环境中依次调用(一个接一个)。

List<Employee>关系反面的列表 ( ) 自动反映上述每个操作期间的正确状态。

  • 当一个Employee实体被持久化时,它会在反面的列表中列出(我没有明确地将新持久化 Employee的实体添加到List<Employee>反面)。
  • 合并实体时Employee,对实体所做的更改会自动反映在List<Employee>反面的相应实体中(我没有明确更改反面的员工列表(List<Employee>)持有的相应实体)。
  • 同样,当一个Employee实体被删除时,它也会从关系反向的列表中删除(我没有明确地从反向列表中删除该实体)。

我目前在 EcliseLink 2.6.0 上。为什么我会看到与以下文本不匹配的这种行为?

与所有双向关系一样,维护双向关系是您的对象模型和应用程序的责任。JPA 中没有魔法,如果您在集合的一侧添加或删除,您还必须从另一侧添加或删除,请参阅对象损坏。从技术上讲,如果您仅从关系的拥有方添加/删除,数据库将正确更新,但是您的对象模型将不同步,这可能会导致问题。

http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany#Bi-directional_Many_to_Many

0 投票
2 回答
510 浏览

java - “一”方拥有的jpa地图

我有一个类似树的数据结构,具有某种复合模式。对于抽象类 Element,有一个 CompositeElement 和一个 SingleElement。它看起来像这样:

到目前为止,这种关系是单向的。它运作良好。但是现在出现了一个用例,我需要从子元素导航到父元素。所以我想做的是:

但是@ManyToOne 注解不允许“mappedBy”属性。

从域的角度来看,父对象拥有数据结构中的子对象。不是反过来。急切获取和级联规则也强调了这一点。

如果关系的所有权在子方,那么 child.setParent(p) 将不会真正起作用,因为这里我缺少地图的密钥。

有没有办法将关系的所有权保留在父级的一方,但仍然是双向的?

0 投票
1 回答
236 浏览

java - 休眠,双向更新

我正在尝试使用休眠更新 2 个表(用户和用户角色)中具有多个角色的用户记录。当我进行保存时,它可以正常工作,但是,当我尝试更新时,如果对象包含存储在数据库中的角色,则会失败。我没有找到一个好的答案,但我想它不能直接使用“更新”方法来完成,我应该在更新中手动实现双向不是吗?我遵循了Spring Security for users 的结构

这是我的用户类:

这是我的 UserRole 类:

这些是我的 DAO 方法:

错误是:

提前致谢。