问题标签 [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.
nhibernate - NHibernate - 三个类之间的三个双向关系给出 N+1
我的对象模型有点复杂,形成了一个三角形。存在具有和User
集合的实体。也有分类法。为了方便起见,我想知道它的主人,如果有的话。见图:Items
Taxonomies
Item
Item
Taxonomy
Taxonomy
Item
所以这产生了三个双向关系。我的问题是当我像这样在 NHibernate 中映射它并要求具有给定 ID 的用户时,我遇到了Select N+1问题。
起初,User
加载的是热切的 fetched Items
。然后Taxonomies
加载与Item
它连接的热切获取。这是预期的并且在映射中定义。但是现在有 N+1 个查询要加载Items
与Taxonomies
.
这是多余的,因为对象图的所有部分都已加载。当我从侧面使我的User-Item
关系单向时,这个问题就消失了User
(正如预期的那样,只有 2 个查询),但我不想删除这种反向关系。是否可以对所有三种关系进行双向优化获取?
这是我的映射部分:
我以最简单的方式查询我的数据库:
c# - 寻找 NHiberneate 双向关系示例
我正在寻找 NHiberneate 双向关系示例以查看 xml 标记和 POCO 类的外观,以及如何更新双向关系。
nhibernate - NHibernate 真的提供透明的持久性吗
开始使用 Nhibernate 来实现持久性,被它尊重你的域模型的承诺所吸引,我试图为我的域对象实现一个关系管理器。基本上,为了在管理双向一对多和多对多关系方面干燥我的代码,我决定让这些关系由一个单独的类管理。当设置一对多或多对一属性时,在字典中创建两个对象的条目,键要么是具有集合值的一侧,以保存多面,要么是具有值的多面一边。
特定类型组合的一对多关系如下所示:
在许多方面,代码片段看起来像:
一方面,在本例中是 SubstanceGroup,代码片段如下所示:
只需使用我的域对象,这非常有效。在域对象中,我只需要引用一个抽象工厂来检索适当的关系,我可以从一侧设置关系,从而自动成为双向的。
但是,当 NH 出现问题时,我的字典中有重复的键。NH 以某种方式设置了一个具有空值(!)的关系属性和一个域对象的新副本(?)。因此,当域对象被保存时,我有该域对象的两个条目,例如关系的多方面,即 _manyToOne 字典。
这个问题让我脱发,我不明白这是怎么回事??
nhibernate - 流利的 NHibernate 插入父 ID 问题与 HasMany 关系
我不明白为什么 NHibernate 插入一个没有父外键的子实体。我发现解决这个问题的唯一方法是使用双向关系,还有其他方法吗?
以下是课程:
这是我的 Fluent NHibernate 映射
当我将一个孩子添加到父母的孩子集合并保存父母时,父母和孩子都被插入到数据库中,但是孩子在没有外键的情况下被插入到父母身上(它有一个空值)
这是生成的插入:
但它应该是:
我想补充一点,我不想通过双向关系来解决这个问题,我不希望孩子有对父母的引用。谢谢!!
hibernate - JPA中与超类实体属性的双向关系
我想用 JPA 实现一些树状结构。我有一个“文件夹”实体和一个“测试”实体。文件夹可以包含文件夹和测试。测试不包含任何内容。
test 和 folder 都有一个 Node 超类,如下所示:
这是文件夹类:
所以主要问题是 mappedBy 属性,它与祖先中未覆盖的超类属性有关,因为我遇到了这样的异常:
Folder 类的“文件夹”和“测试”属性可能存在一些棘手的映射,我需要一些帮助。
编辑:我使用 targetEntity=Node.class 指定了文件夹类的文件夹和测试属性:
它得到了工作。但工作不正常。现在,当我需要分别获取它们时,测试和文件夹都映射到这两个属性(我不知道为什么我没有得到异常)。
所以我仍在寻找合适的映射来实现这一目标。我会给予任何帮助。
jpa - 无法从实体 bean 中清除相关实体 bean 的列表
我正在尝试运行下面的代码,但我不断收到错误“无法合并已删除的实体”。
我的数据库表如下所示:
我的Java代码:
我似乎无法理解这一切的逻辑。谁能解释它是什么,我在这里失踪了?我已经尝试搜索答案,但我发现很难定义给我相关结果的关键字。
更新:
横幅实体:
BannerPeriod 实体:
c# - 使用官方 c# 驱动程序在 mongodb 中保存具有双向关系的对象
我有两个这样的课程:
当我想保存 Company 类的对象时:
将抛出 StackOverFlow 异常。
jpa - @OneToOne 单向和双向
我有两个例子,第一个是@OneToOne 单向映射,第二个是双向的。在单向映射中,拥有侧表必须包含一个连接列,该列引用另一个表的 id;然后在双向中,它们都必须包含彼此的外键列。但是在使用自动生成策略生成数据库模式后,两个示例对数据库模式的影响是相同的。单向映射是正常的,但双向示例只包含一个外键列,但必须涉及到对方的外键!
单向映射
双向映射
为什么数据库模式输出相同,为什么双向映射像单向一样?
java - Spring @ResponseBody Json 循环参考
我正在尝试使用 Spring 3.x@ResponseBody
生成 json/xml 响应,当存在多对多关系 b/w 表时,我使用 JPA 2.0 ORM,然后 json 抛出 LazyInitializationException
如果我给出“eager fetch”,那么它将进入循环引用。
scala - Scala中有双向映射之类的东西吗?
我想链接 2 列唯一标识符,并能够通过第二列值获取第一列值以及通过第一列值获取第二列值。就像是
Scala中有这样的设施吗?
实际上我还需要更多:3 列可以在一个三元组中选择一个三元组中的任何一个(在整个地图中,单个值永远不会被多次满足)。但是 2 列双向映射也可以提供帮助。