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

java - 在 Hibernate 中通过映射表值排序

我有一个 @ManyToMany 映射,其中表通过映射表进行自我引用,我们想在实际映射表中的订单 ID 上进行排序,但发现很难配置它。

我们可以在 hibernate xml 中执行它,因此很自然地假设 JPA 注释中存在支持。有人知道我们如何对映射表中的值进行排序吗?

表格是:

而自引用的映射表为:

在 Hibernate Annotations 中,我们有:

这是我们在 hibernate xml 中执行它的方式:

所以我们想使用@OrderBy 标签但不能引用映射表中的inorder 值。有任何想法吗?谢谢。

(我们已经在代码中的 children 集合上尝试了 @OrderBy(intorder) ,但这对我们来说并没有奏效)

0 投票
4 回答
2893 浏览

django - 如何防止在 Django Admin 中对 FK / MTM 字段进行自我(递归)选择

给定具有 ForeignKeyField (FKF) 或 ManyToManyField (MTMF) 字段的模型,其外键为“自我”,我如何防止在 Django Admin (admin) 中进行自我(递归)选择。

简而言之,应该可以防止在管理员中自我(递归)选择模型实例。这适用于编辑模型的现有实例,而不是创建新实例。

例如,新闻应用中的文章采用以下模型;

如果有 3 个实例(标题:a1-3),当通过管理员Article编辑现有实例时,该字段默认由一个 html(多个)选择框表示,该框提供所有文章的列表 ( )。用户应该只看到并能够选择除自身以外的实例,例如在编辑a1 时,可用于选择 = a2、a3。Articlerelated_articlesArticle.objects.all()ArticleArticlerelated_articles

我目前可以看到 3 种可能的方法来做到这一点,按偏好递减的顺序排列;

  1. 提供一种方法来设置查询集,在管理表单字段中提供可用选项related_articles(通过排除查询过滤器,例如Article.objects.filter(~Q(id__iexact=self.id)),从用户可以查看和选择的相关文章列表中排除正在编辑的当前实例。创建/设置要使用的查询集可以在__init__自定义的构造函数 () 中发生Article ModelForm,或者通过某种动态limit_choices_to Model选项发生。这需要一种方法来获取正在编辑的实例以用于过滤。
  2. 覆盖or类的save_model函数以在保存实例之前检查并从中删除自身。这仍然意味着管理员用户可以查看和选择所有文章,包括正在编辑的实例(对于现有文章)。Article ModelModelAdminrelated_articles
  3. 当需要在管理员之外使用时过滤掉自我引用,例如模板。

理想的解决方案 (1) 目前可以通过管理员外部的自定义模型表单来完成,因为可以将正在编辑的实例的过滤查询集变量传递给模型表单构造函数。问题是,您能否获得Article实例,即在创建表单之前正在编辑“自我”以执行相同的操作。

可能是我以错误的方式解决这个问题,但是如果您允许将 FKF / MTMF 定义为同一模型,那么应该有一种方法让管理员 -做正确的事情- 并阻止用户通过以下方式选择自己在可用选项列表中排除它。

注意:现在可以执行解决方案 2 和 3,并提供解决方案以尝试避免将这些作为答案,理想情况下,我希望得到解决方案 1 的答案。

0 投票
1 回答
1863 浏览

django - 在 Django 中查找多对多类别树的根

我有一个 Django 模型,例如:

每个类别可能存在于许多父母中。有些类别没有父类别,它们是“根”类别。在简单的 SQL 中,我可以通过以下方式找到它们:

事实上,这很好用。如何通过 Django-y 调用找到“没有父母的类别列表”?我试过:

但如前所述,两者都不起作用。

0 投票
3 回答
1618 浏览

sql - SQL多对多查询问题

我有三个表:视频、视频类别和类别。

表格如下所示:

在我的应用程序中,我允许用户多选类别。当他们这样做时,我需要返回每个选定类别中的所有视频。

我最终得到了这个:

但是对于我添加到多选的每个类别,我都必须在我的内部选择中添加一个连接:

我不禁觉得这是真正错误的方法,但我在试图看到正确的方法时被阻止了。

0 投票
1 回答
785 浏览

grails - 多对多不存在于 gorm/grails 应用程序中

我的 grails 1.1 应用程序中大致有以下内容

创建了正确的表(app、app_category 和 app_categories)并且列看起来都很好,但我最终没有在关联表中得到任何记录,也没有错误。app_category 表和 app 表已正确填充。

我是否需要手动管理关联表的域对象?或者更好的是,我只是错过了一些完全明显的东西吗?

0 投票
2 回答
2073 浏览

hibernate - 无法使用 Hibernate 3.3.1GA 进行多对多工作

我有一个简单的多对多映射:

而这个测试用例:

测试失败。在日志中,我可以看到:

所以创建了正确的表,双主键没问题,外键是正确的。

坚持item不做正确的事情:

如您所见,项目本身是持久化的,但不是包含类别的集合(连接表中的插入丢失)。但是集合中有值!

当它读取项目时,它会查询连接表:

但当然,它什么也找不到。怎么了?为什么休眠考虑连接表find()而不考虑连接表persist()

我正在使用 Hibernate 3.3.1,Hibernate Annotations 3.4.0

[编辑] 为了解决这个问题,我尝试引入双向映射。首先,我将此代码添加到Category

然后,我更改了测试以更新双方:

我什至再次坚持分类。结果:什么都没有。Hibernate 很高兴地忽略了多对多映射。

作为第二个修复,我尝试按照@JoinTablezoidbeck 的建议添加注释:

再次,什么都没有。

0 投票
1 回答
2322 浏览

hibernate - 没有复合键的休眠中的多对多

我正在处理遗留数据库。我正在使用 pojos & hibernate & HSQLDB编写单元测试。我收到以下错误:

假设我有PostTag实体(当然还有他们的表poststags)。Post还有另一个表来定义和Tag调用之间的多对多post_tags

因为post_tags包含一些关于关系的额外信息,比如activedeleted列。我创建了另一个实体PostTag来处理这个问题。

在这里描述我的问题是伪类:

当我查看生成错误的语句时,似乎 Hibernate 正在尝试使用 来制作复合键PRIMARY KEY (post_id, tag_id),并且它也尝试使用post_id identity.

谁能帮我解决我的问题?

更新:

因为我正在处理一个遗留数据库,所以这只是一个演示问题的示例。但是我会尽量按照例子翻译实际的语句(PS:不是ALTER TABLE它是a CREATE TABLE):

0 投票
8 回答
33765 浏览

python - 如何在不知道子类名称的情况下访问 django 中对象的子类?

在 Django 中,当您有一个父类和多个从它继承的子类时,您通常会通过 parentclass.childclass1_set 或 parentclass.childclass2_set 访问一个子类,但是如果我不知道我想要的特定子类的名称怎么办?

有没有办法在不知道子类名的情况下获取父->子方向的相关对象?

0 投票
3 回答
18056 浏览

python - 通用多对多关系

我正在尝试创建一个消息系统,其中消息的发件人和收件人可以是通用实体。这对发件人来说似乎很好,只有对象可以引用(GenericForeignKey),但我不知道如何为收件人解决这个问题(GenericManyToManyKey ??)

下面是一个简化的例子。PersonClient 和 CompanyClient 从 Client 继承属性,但有自己的特定细节。最后一行是症结所在。如何让消息接收者成为一组 CompanyClients 和 PersonClients

0 投票
2 回答
3894 浏览

vb.net - 如何为多对多关系插入实体?(实体框架)

如果我在用户和角色之间存在多对多关系,并且我有一个用户实体的实例和多个角色ID,我可以在没有任何其他角色数据且不进行选择的情况下插入这两种类型的实体之间的关系先说角色?

更新:

我可能还不够清楚。我没有角色的实例,只有角色 ID。是否可以在不先从数据库中填充 Role 对象的情况下创建 User 和 Role 之间的关系?