问题标签 [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 投票
2 回答
1191 浏览

nhibernate - NHibernate 多对多表未更新

我有 3 个表,它们是具有多对多关系的“新闻”、“标签”、“News_Tags”。

通过以下映射,“News”和“Tags”表已更新,但“News_Tags”尚未更新。

谁能帮我?

消息:

标签:

新闻_标签

非常感谢

道明。

0 投票
2 回答
1174 浏览

nhibernate - nhibernate 多对多映射:为什么整个包集合被删除并重新插入?

期待 Nhibernate 用户、专业人士、专家和开发人员。请帮忙 !!!

我想实现两个类之间的:m 关系。一个学生参加更多的课程,一个课程由更多的学生组成。我使用包进行多对多双向关联,以从每个站点获取两个列表。

两个学生和课程类:

在数据库中有两个表 t_Student、t_Course 和一个关系表 tr_StudentCourse(id, student_id, course_id)。

在双向关联中,课程被选为反向。我做了与 nhibernate 文档第 6.8 节中的示例 (Categorie, Item) 相同的操作。因此,我通过调用添加/删除方法在 MyCourses 列表中插入课程后保存了学生对象。

效果很好,可以在数据库中找到 st1、c1 及其关系 (st1,c1)。关系数据集是 (id= 1 , st1.id, c1.id) 和 (id= 2 , st1.id, c2.id)。然后我向对象 st1 添加更多课程。

我可以看到 3 个关系数据集,但是删除了两个旧关系,并使用另一个新 id 创建了新的三个。(id= 3 , st1.id, c1.id), (id= 4 , st1.id, c2.id) 和 (id= 5 , st1.id, c3.id)。关系表中没有 id=1 和 2 的数据集。

如果我从 student.MyCourse 中删除课程然后保存学生对象,则删除相同。所有集合也被删除并重新创建了一个新列表,其中少了一个已删除元素。这个问题使得关系表中的 id 的创建速度非常快,并且通过对关系进行备份而产生了麻烦。

我在互联网、文档和论坛中查看了几天,以找出为什么整个旧集合被删除以及每次更改都创建了一个新集合,但我没有成功。这是来自休眠映射的错误还是我做错了什么?

我非常感谢您的帮助和回答。

Nhibernate 文档http://nhforge.org/doc/nh/en/index.htm

0 投票
1 回答
229 浏览

uml - Footballer Mapper 和 Bowler Mapper 之间的双向关联

这个问题是关于 Martin Fowler 的名为 Patterns Of Enterprise Application Architecture 的书中的一个特定 UML 图。

在第 302 页的“继承映射器”类图中,为什么Footballer MapperBowler Mapper之间存在“双向关联” ?

0 投票
1 回答
4655 浏览

nhibernate - NHibernate 双向一对一映射问题

在尝试在 NHibernate 中创建双向一对一映射时,我发现,我无法递归地获得对象的引用。

Person例如:假设我在和之间存在一对一的关系Address

然后在执行以下代码后,

我需要nullp.Address.Person. 即 ID 为 1 的同一个人。

但是该属性正在返回一个null-value。

我应该寻找什么来解决问题?

我的数据库表是这样的:

人.hbm.xml

地址.hbm.xml

我也收到一个错误:

0 投票
2 回答
6655 浏览

java - 为什么休眠执行两个查询以急切加载@OneToOne 双向关联?

我有一个实体 A,它有一个 B 实体,而 B 有一个带有 @OneToOne 双向关联的 A。

现在,当我找到所有 A 记录时,hibernate 在 B 上使用左外连接执行两个查询,如下所示:

第一次查询加载 A 和 B 字段是可以的,但是为什么要执行第二次查询来重新加载 A?我认为这个查询在 B 中加载了 A 内容,但是这个 A 显然是包含 B 的 A ...所以它已经加载了第一个查询,不是吗?

- 编辑 -

实体 A:

实体 B:

就是这种情况,A 上的 findAll 需要两个查询……为什么?

0 投票
2 回答
5191 浏览

python - 在 MongoEngine 中实现双向关系

我正在构建一个使用 MongoDB 和 MongoEngine 来存储数据的 Django 应用程序。为了呈现我的问题的简化版本,假设我想要两个类:用户和页面。每个页面都应该与一个用户相关联,每个用户一个页面。

(请注意,必须在 User 之前定义 Page。如果我缺少处理循环依赖项的 Pythonic 方式,请告诉我。)可以很好地创建和保存每个文档,但是将 Page 分配给 User 会引发错误。

谁能解释为什么抛出这个异常,我做错了什么,以及如何避免它?

0 投票
1 回答
751 浏览

c# - 使用 Fluent NHibernate 自动映射创建多个双向一对多关联

我对 NHibernate 和 .NET 框架还很陌生。

我想映射我的 Project 类,它具有一对多的关系 Subproject 和 ProjectTask 类。

我的实体从抽象基类继承 Id 属性。

我使用自动映射来覆盖以重新定义我的映射:

当我只映射与 Subproject 类的关联时,一切正常,并且 Project.Subprojects 中 Subproject 类的所有实例都将正确存储到数据库中。当我对 ProjectTask 类使用第二个覆盖时,我得到以下异常:

---> NHibernate.HibernateException:数据库中已经有一个名为“ProjectId”的对象。无法创建约束。请参阅以前的错误。

---> System.Data.SqlClient.SqlException:数据库中已经有一个名为“ProjectId”的对象。

有谁知道,为什么会这样?

0 投票
3 回答
247 浏览

sql - 我的 SQL 语句将“Arnold Schwarzenegger”和“Hasta la vista baby”插入这两个空 SQL 表中是什么?

将“Arnold Schwarzenegger”和“Hasta la vista baby”插入到以下空 SQL 表中,我的陈述是什么?

这个问题的标题原本是“如何将第一条记录插入到具有双向关联和自动生成整数PK的SQL表中?” 但我不确定我的措辞是否正确......基本上,我有两张桌子ActorsCatchPhrases.

Actors好像:

CatchPhrases好像:

因此,Actor 可以有多个流行语,但必须至少有一个。流行语与演员相关联。目前这两个表中都没有数据。

0 投票
1 回答
275 浏览

nhibernate - nhibernate - nhprof - 延迟加载的无界结果集,用于一对多双向关联

我有一个具有相应子级的标准类别域实体。即类别及其对应的子类别。这如下所示。真的很标准的东西。

我正在使用 NHibernate 分析器来确保一切都以最佳方式运行。但是,当我通过调用“RemoveCategory”方法并传入一个类别来删除子类别时,它必须访问名为“_children”的底层集合,该集合会启动“_children”集合的延迟加载。

这会在 NHProf 中导致“Unbounded result set”警报,这是有道理的,因为我们没有指定限制。它将加载整个集合。我想指定一个限制,因为这个集合可能会变得非常大。

我已经查看了 nhprof 网站上关于无限结果的示例(如下所示),但我看不到如何使用它。

当我们显示数据但我想更新我的实体并最终保留它时,这似乎很有用。关于如何指定集合的​​延迟加载限制的任何想法?

亲切的问候

穆罕默德

0 投票
2 回答
4075 浏览

java - 构建hibernate实体时如何处理双向关系?

我想用 JPA/Hibernate 对两个实体、一个组和一个帐户之间的关系进行建模。一个帐户可以有多个组,但反之则不行,因此我们在帐户和组之间建立了 OneToMany 关系。我的工作同事建议对实体进行建模,AccountGroup喜欢

我现在的问题是addToAccount关于Group. 根据我的工作同事的说法,这种方法是必要的,因为我们需要从双方更新两个实体之间的双向关系,以确保两个实体的内存模型一致。

但是我相信在构造函数中调用该方法addToAccount不是一个好主意,因为

  1. Listof s 是延迟获取的Group,因此调用该方法 addToAccount需要一个打开的事务。所以 Group只能在打开的事务中调用构造函数。在我看来,这是一个非常烦人的限制。

  2. 作为构造函数的参数给出的Account对象Group由构造函数更改。在我看来,这是构造函数的一个令人惊讶的副作用,Group 不应该发生。

我的建议是更好地使用一个简单的构造函数,比如

并手动处理双向关系。但也许我错了。在构建休眠实体时,是否有一种常见的方式来处理双向关系?