问题标签 [jointable]

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 回答
460 浏览

jpa - JPA Join Not Cascading for jUnit Test

我用连接表定义的 2 个表之间存在多对多关系。

由于公司架构限制,连接表必须有一个 UUID 列。

我有一个名为 DAO 的方法associateItems,它应该在连接列中插入一行。为了测试所有内容,我在 jUnit 测试中执行以下操作。

此测试在最后 2 行失败。

在我的 DAO 中,我尝试了很多事情。我尝试将classAItemand添加classBItem到彼此的列表中并合并它们。但这会导致错误,因为连接表对象没有 UUID。我尝试创建连接表对象并将其持久化。但随后测试的最后两行失败,因为它认为列表的大小为 0。

我一直坚持第二种解决方案(失败总比错误好)。

我知道连接表项正在插入到数据库中。我还手动输入了一个连接表项,并确保在找到关联时填充列表。所以测试只是在制作连接表项然后关联相关列表方面存在问题。

我尝试过处理级联、获取类型和刷新。但我似乎找不到让测试通过的方法。

有人知道我需要做什么来解决这个问题吗?

0 投票
1 回答
722 浏览

c# - 连接表上有额外列的多对多

嗨,我将如何建立这种关系?我已经有一个多对多的关系,但现在有了新功能,我需要在连接表中添加一个额外的列。

为了简单起见,我有一个用户类、产品类和用户产品类,今天它看起来像这样。

产品.hbm.xml

用户.hbm.xml

级联应该是什么样子?现在对于新功能,我创建了一个新类 UserProduct:

并创建了 UserProduct.hbm.xml

如果我之前使用过 user.Products.Add(product); 现在会是什么样子?我将如何映射用户和产品?如何更新现有记录?当我删除用户时,我想删除与产品而不是产品的关联。

新问题: 我有一个注册用户可以收集产品的页面。在这个页面上,我现在希望用户能够隐藏其中的一些产品。我有一个填充的网格视图和一个带有复选框的模板字段。如何更新我有“HideProduct”列的用户产品。我在一个按钮中有这个代码。

谢谢您的帮助!

0 投票
1 回答
2831 浏览

ruby-on-rails - 如何遍历 has_many 集合并使用另一个模型设置 HABTM

我有很多 LineItems 的订单。LineItems has_many 潜在客户。在用户购买线索之前,线索不会与用户关联。该关联是通过 HABTM 关系和连接表 LeadsUsers 建立的。

用户购买潜在客户后,我需要设置关联。我有一个具有正确 HABTM 代码设置的 LeadsUsers 模型。在我的订单模型中,我有以下内容:

此方法失败:未定义的局部变量或方法“line_item”。我知道这意味着它不知道我指的是什么 line_item ......有什么想法吗?最终我希望能够引用 User.leads.all。

0 投票
2 回答
671 浏览

sql - 使用 Rails 中的连接表进行 SQL 连接

所以,我不确定为这些表进行连接的最佳方法是什么。我想使用 JOIN,因为我相信它比将所有三个表都放在 FROM 上要快。所以,如果我有三张桌子......

如何使用连接表对这些数据进行连接?

0 投票
1 回答
2122 浏览

java - JPA 使用 @JOINTABLE 和额外的 @JOINCOLUMNs

我正在使用 JPA 从现有的 ERP 系统中提取数据。我正在使用(现有的)可连接的某些数据。问题是我还应该匹配不在连接表上的列,而是在源表本身上。

我当前的连接表条件是这样的:

这可行,但是如何/在哪里添加条件 T1.F1 = T3.F6?

0 投票
1 回答
1757 浏览

hibernate - JPA/Hibernate @ManyToMany 不在连接表上创建索引

请考虑以下两个实体:

连接表PROFILE_TAG创建得很好,但是没有创建索引,我希望 hibernate 会在连接表上创建一个复合索引。是什么赋予了?

0 投票
2 回答
8621 浏览

mysql - 如何连接多个表,包括查找表并按行返回数据

我正在尝试显示一些简单的计算机游戏结果,并使其易于在我的代码中逐行遍历结果。我想要它,以便每场比赛的所有相关数据都在每条记录中,这样我就可以在一行上输出所有数据,例如:

  • A队45分)vs B队55分),比赛时长:5分钟
  • C队60分)vs D队65分),比赛时长:4.3分钟

因此,对于一场比赛,有两支球队互相比赛,他们各自在比赛结束时得分。基本上,每场比赛的 games_teams 表中最终都会有两行。

这是我的架构:

架构图片

这是我的表格数据:

表格数据图片

这是我想要实现的输出,因此我可以轻松地遍历结果并将它们输出到页面上:

所需的输出图片

我设法通过一些可怕的 SQL 和许多子查询来实现这一点,如下所示:

该方法的问题是它会很慢并且无法扩展。我还需要从 games_teams 表中提取其他游戏统计信息,这样就会有更多的子查询。

我尝试的另一种方法是:

不需要的输出图片

我通过以下 SQL 实现了这一点:

现在这种方式将更难在代码中遍历,因为每个游戏的相关数据都在两个不同的记录中。我必须构建该行的第一部分,然后进入下一个循环迭代并打印下一部分。然后为下一场比赛重新开始,我试图在一行上显示所有信息,例如:

A队(45分)vs B队(55分),比赛时间:5分钟

所以这就是为什么我认为如果全部都在一张唱片上会更容易。有没有办法很好地完成这一点,所以如果我需要 games_teams 表中的更多列,它也可以扩展?

如果您需要重新创建它,这是一个包含数据库代码的 pastebin 链接。

非常感谢任何帮助,谢谢!

0 投票
1 回答
3415 浏览

java - @JoinTable 使用导入键而不是主键

使用 JPA/Hibernate 3.6/DB2。

我有以下异常: 原因:org.hibernate.AnnotationException:SecondaryTable JoinColumn cannot reference a non primary key

造成的:

requestBatchID 不是主键,而是从 RequestBatch 表中导入的键(在那里,它确实是主键)。为什么 JoinTable 必须使用主键?我的意思是,我不是刚刚定义这是一个多对一关联吗?为什么它必须是主键?

指定:这是表格的样子。

想要的结果是 Hibernate 为我构建的这个 SQL 查询:

0 投票
0 回答
324 浏览

java - 使用连接表作为 JPA 的参数

在以下来自数据库的实体类中,如何编写查询以使用集合 productsCollection2 作为参数从表中选择并检索 productsCollection3。???我可以使用 productCollection2 并使用 IN 子句将列表传递给它进行选择。

0 投票
1 回答
1926 浏览

java - Java 实体类:如何在具有连接列的实体中添加/编辑项目?

我已经阅读了几个关于这个以及 API 的主题,我觉得我在正确的轨道上;但是,我必须仍然没有足够的理解来让它工作,因为..它不起作用!

我有以下 2 个表:TODO 和 JOBTYPE

TODO 表有 TDTDKEY (PK) 和 TDJTKEY(FK?) JOBTYPE 表有 JTJTKEY (PK) 和 JTCODE

在此处输入图像描述

如您所见,Todo.tdjtkey 对应于 jobtype.jtjtkey,我的目标是检索 jtcode 而不是密钥。

实体类部分看起来像这样:

Todo.java

JobType.java

因此,当我对其进行命名查询时,Todo.findAll它会给我 TDTDKEY(即 TD00000001)和相关的 TDJTKEY CODE(即 PICS PGM)。

现在,既然我终于让我的选择工作了,我正在尝试看看如何添加/编辑。

例如,如果我在 TD00000001 上并且我想将 PROG 更改为 SUPPORT。

如果我尝试它的正常方式sv.setJobType(txtJobType.getText());不起作用并给我:

所以这对我来说或多或少是可以理解的,但我对如何对 Todo 表执行更新一无所知?不知何故,我需要它在 JobType.java 中找到 SUPPORT,然后获取它的 JTJTKEY 并将其作为新的 TDJTKEY 放在 Todo.java 中?

任何帮助/提示表示赞赏!

编辑:以下代码按答案工作!谢谢!

我的实体类现在看起来像这样

Todo.java

JobType.java

当然,我必须添加适当的删除和添加方法。