问题标签 [many-to-many]

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 投票
3 回答
1490 浏览

jpa - 为什么我的 remove() 实际上没有使用 JPA @Many-to-Many 从数据库中删除引用

@ManyToMany在我的应用程序中设置了一个非常简单的 JPA 关系。AProduct是一个或多个OrderSystems的一部分。每个OrderSystem可以有很多Products。这是典型的多对多关系。

我要解决的问题是:如果我使用orderSystems.remove()从 a 中删除Product对 an的引用OrderSystem,则该条目似乎已被删除(在该会话中)。但是,刷新时不会从交叉引用表中删除该条目,并且当我重新加载它时,Product它具有前一组OrderSystems。

我有以下代码:

谁能指出我在这里缺少的东西?

0 投票
2 回答
2697 浏览

python - 在 Django 中使用 ManyToMany 插入对象

我有一个类似博客的应用程序,其中包含故事和类别:

现在我知道,当您保存具有多对多字段的模型的新实例时,会出现问题,因为该对象尚未在数据库中。这个问题通常表现在表单提交上,可以巧妙地使用story_form.save(commit=False). 没有形式可言的情况呢?就我而言,我想构建一个 API 来接受远程提交。由于我喜欢 JSON,而且我们公司的许多其他消息都是 JSON 格式(包括来自该服务器的传出消息),我希望能够接收以下内容:

并实现一个将值转换为实例的工厂。但我希望工厂对操作类型尽可能不可知。所以:

也应该以相同的方式转换,除了 INSERT 忽略 id 并且 UPDATE 获取已经存在的实例并覆盖它。(远程提交者侦听一个提要,除其他外,它还提供要缓存的类别对象,因此它可以而且必须通过 id 引用它们,但它与数据库没有任何直接通信。)

我真正的问题是:对涉及 ManyToManyManager 的 Django 模型对象的实例进行膨胀最简单的方法是什么。据我所知,任何插入具有多对多字段的对象都需要两次数据库命中,因为必须首先获得一个新的 id。但我目前尴尬的解决方案是立即保存对象并将其标记为隐藏,以便后续功能可以使用它并将其保存为更有意义的东西。似乎上一步将被覆盖save,以便没有 id 的对象保存一次,将一些代理字段复制到categories,然后再次保存。最重要的是一些强大的管理器对象可以为我省去麻烦。你有什么建议吗?

0 投票
2 回答
866 浏览

c# - 即使存在 linq to sql 连接,子集合也不会过滤

我有一个 LINQ 查询:

或 Lambda 语法,如果您愿意(我正在使用的那个)(messageTypeFieldID设置在来自参数的 var 调用之上。):

我刚刚开始学习 LINQ 连接,并遇到了一种情况,即在我正在设置的新规范化(多对多)表中需要它,并且我希望返回所有消息类型,每个消息类型及其关联字段都位于“MessageTypeField_MessageType”下。

我的“MessageTypeField_MessageTypes”表是一个相当简单的标准化策略设置,就像这样,我应该说明即使 MessageTypeID“有很多”它是唯一数据,所以它可能是:

现在上面的代码执行并返回一个我很满意的查询..(执行正确的 INNER JOIN)但是当我查看messageTypes.ToList()[0].MessageTypeField_MessageTypes例如快速观察时,我希望看到1 条记录,我得到了一整套 messageTypeField_MessageType 记录~17,过滤MessageTypeFieldID而不是过滤MessageTypeID。它应该在每次迭代时按消息类型 id 过滤,并且只返回一条记录。关于我做错了什么或如何实现我需要的任何想法?

对不起,这个复杂的例子,但我希望你们能帮助!

0 投票
4 回答
177 浏览

database - 另一个多对多场景

我的数据库模型中有 2 个需要多对多关系的特定表。表格是SystemsUsers。一个用户可以是多个系统的成员,一个系统中有多个用户。

system_id是系统表user_id中的PK,是用户表中的PK。我将它们链接system_id为用户表中的 FK。我似乎无法在两者之间找到一张桌子。我有形成一个system_user表并在其中使用两个外键的想法,但看不到它是如何工作的。

0 投票
5 回答
20311 浏览

entity-framework - 如何在不加载所有数据的情况下删除实体框架中的多对多关系

有谁知道如何在 ADO.NET Entity Framework 中删除多对多关系而无需加载所有数据?在我的情况下,我有一个具有属性订阅的实体主题,我需要删除一个订阅。代码myTopic.Subscriptions.Remove(...)有效,但我需要先加载所有订阅(例如myTopic.Subscriptions.Load()),我不想这样做,因为有很多(我的意思是很多)的订阅。

0 投票
1 回答
1237 浏览

wpf - Silverlight/WPF 多对多复选框绑定列表

我有一个具有多对多关系的实体模型。为简单起见,假设它是一个汽车实体和一个功能(CD 播放器、天窗等)实体。

我有一个 Silverlight/WPF 表单,您可以在其中编辑汽车实体。我想让可能的功能列表(功能表中的所有内容)成为复选框列表。那部分很容易。但是,我正在尝试一种优雅的方式来绑定复选框,以便当我选中、取消选中其中一个复选框时,它会添加/删除该功能与汽车之间的关联。

我知道这可以很容易地用老式的 WinForms 风格的事件处理程序来完成,但我想知道是否有人可以使用数据绑定来做到这一点,以便我仍然可以保持我的演示文稿和我的逻辑分开

0 投票
2 回答
721 浏览

django - 在django中将对象从一个多对多关联移动到另一个?

有个问题。假设我有两个处于多对多关系的模型(文章、出版物)。文章 A 在出版物一、二和三中。我想从这些出版物中删除它并将其放入出版物 X。django 文档涵盖了删除对象和添加对象,但我不想删除或添加对象,只是“移动”它们。我该怎么做?

提前致谢,

Ĵ

0 投票
1 回答
2252 浏览

hibernate - Hibernate - @ManyToMany 与映射实体中的附加字段

我的简化实体方案如下:

PERSON 与具有特定角色(打哈欠)的公司相关联。

我的第一个想法是在 PERSON 和 COMPANY 之间配置多对多关系。但是,显然,我不能以这种方式在 ROLE 表中包含 ROLE 的类型(作为两个外键的另一个字段)。

我承认这样做的正确方法是使用两个 OneToMany 关系并将 ROLE 作为一个实体单独包含(已在 stackoverflow 上回答)。

但这就是我卡住的地方:我使用 html 表单将一个人添加到公司并选择适当的角色,我如何将其保存到数据库或更好:我如何告诉 Hibernate 保存它。一个人有一个名单,公司也有。一个角色有一个人和一个公司。他们如何在中间相遇?所以基本上我要问的是:

准确的 Hibernate 映射配置如何让我可以一步保存具有公司角色的人员?

0 投票
4 回答
5930 浏览

php - PHP & Mysql 用复选框形式更新多对多关系

我有一个多对多的表结构和更新复选框表单。

目标是使用 users_project 表将 users 表与 projects 表相关联。这样,每个项目可以有很多用户,每个用户可以有很多项目。

每个用户编辑页面上的表单看起来像这样

以下是三个表的示例。

用户表

项目表

user_projects 表

此表根据它们的 id 关联上述两个表

我制作了一个复选框表单来添加和编辑这些值。在每个用户页面上,它会显示项目表中的所有项目。然后查询 user_projects 表并找到匹配列表以将检查添加到复选框。

但是如何将这些值编辑到数据库中?我如何知道用户是否取消选中了先前选中的框或选中了一个空框并更新到数据库而不循环查询用户表上的 project_id 和 user_id 的匹配项?

这是我希望最终结果实现的粗略概念。

这似乎根本不是一个好主意,因为我必须为项目表中的每个项目至少查询一次数据库。对于我认为是常见问题的问题,必须有更好的解决方案。我知道我只是想错了。

注意:我考虑过只是序列化一个数组并将其粘贴在用户列中,但这是不可接受的,因为我无法将项目与仅用户关联到项目并破坏目的。

我希望在没有任何 javascript 技巧的情况下实现这一点。

0 投票
9 回答
9795 浏览

sql - 多对多关系:在列中使用关联表或分隔值?

2009.04.24 更新

我的问题的重点不是开发人员的困惑以及如何处理它。

关键是要了解分隔值何时是正确的解决方案。

我见过商业产品数据库中使用的分隔数据(Ektron 哈哈)。

SQL Server 甚至具有 XML 数据类型,因此可以用于与分隔字段相同的目的。

/结束更新

我正在设计的应用程序有一些多对多的关系。过去,我经常使用关联表在数据库中表示这些。这给开发者带来了一些困惑。

这是一个示例数据库结构:

Document 和 Category 之间存在多对多的关系。

在此实现中,Document.CategoryIDs 是一个大的以竖线分隔的 CategoryID 列表。

对我来说,这很糟糕,因为它需要在查询中使用子字符串匹配——这不能使用索引。我认为这会很慢并且不会扩展。

使用该模型,要获取某个类别的所有文档,您需要以下内容:

我的解决方案是创建一个关联表,如下所示:

这让开发人员感到困惑。我缺少一些优雅的替代解决方案吗?

我假设 Document 中会有数千行。类别可能像 40 行左右。主要关注的是查询性能。我是否过度设计了这个?

是否存在优先将 ID 列表存储在数据库列中而不是将数据推送到关联表的情况?

还要考虑我们可能需要在文档之间创建多对多关系。这将建议一个关联表 Document_Document。这是首选设计还是将关联的文档 ID 存储在单个列中更好?

谢谢。