问题标签 [composite-key]

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

java - Hibernate 使用复合键返回无效结果

我得到了最奇怪的结果。我有一个带有复合键的类。如果我执行以下查询:

来自 LOVEJB l order by l.canonicalId desc

我的结果不是按我要求的“ canonicalId ”列排序的。相反,规范的 id 结果如下:

823 823 822 823 ,,,

有人可以给我一些关于我应该如何尝试破解它的指示吗?我已经搞砸了hashcodesequals,我尝试了一个新的类等,但无济于事。

0 投票
4 回答
16895 浏览

java - JPA 复合键 + 序列

是否可以在普通 JPA 或 JPA+Hibernate 扩展中声明复合键,其中复合键的元素是序列?

这是我的复合类:

我已经提供了applicationentitynativeId的值nativeKey。我想构建一个如下所示的实体:

当我调用em.persist(i1) 时,我希望canonicalId生成并插入集成。

这可能吗?如果是这样,简单的方法是什么?(我不喜欢使用应用程序提供的密钥或本机 sql)。

0 投票
5 回答
6484 浏览

mysql - MySQL 问题 - 唯一键无法正常运行,还是我误解了?

我正在尝试创建一个关系,其中可能包含四个不同部分中的任何一个,但相同部分的任何集合都应该被视为唯一的。

示例:分配必须有一个指定的公司,可以选择有一个指定的位置、工作组和程序。分配可能没有没有位置的工作组。

假设我们有公司 A、B、C;位置 X、Y、Z;工作组 I、J、K 和程序 1、2、3。

所以有效的关系可能包括 A - X - I - 1 A - Z - 2 B - Y C C - 3 B - Z - K

但无效的关系将包括 A - K(无位置的工作组) Y - K - 1(无公司)

所以,为了创建我的表,我创建了

我认为这将处理我的所有关系,除了如果有工作组(我认为我可以很高兴地以编程方式或使用触发器来完成)分配位置的必要性之外

但是,当我测试此架构时,它允许我输入以下内容...

……毫无怨言。我猜 (1, null, null, null) 不等于自身,因为包含了空值。如果是这种情况,有什么办法可以处理这种关系吗?

任何帮助,将不胜感激!

0 投票
1 回答
2049 浏览

nhibernate - Nhibernate 中具有复合 ID 的意外代理对象

我有一个使用复合 id 的数据结构(我不想将其更改为单个),除了多对一连接之外,一切都加载正常,如果连接为空,而不是将属性映射为 null,而是将其映射为空代理对象。我写了一个丑陋的工作(见吹)。有什么解决办法吗?

私有节点_Parent;

}

以映射文件开头

并通过

0 投票
6 回答
12838 浏览

sql - SQL 复合键查询

再次引用此SQL products/productsales

当主键由两列而不是一列组成时,我怎么能做这样的事情?

所以 products 有两列作为 PK,productsales 有两列作为 FK。

这是使用 1 列键的解决方案:

0 投票
14 回答
595468 浏览

mysql - 如何为 MySQL 中的多个列指定唯一约束?

我有一张桌子:

现在我想让列用户、电子邮件、地址(一起)唯一。

我如何在 MySql 中执行此操作?

当然,这个例子只是……一个例子。所以请不要担心语义。

0 投票
5 回答
9882 浏览

ruby-on-rails - 在连接表中,Rails 缺少组合键的最佳解决方法是什么?

我有一个连接表(如上),其中包含引用相应类别表和帖子表的列。我想对categories_posts连接表中的复合键 category_id、post_id强制执行唯一约束。但是 Rails 不支持这一点(我相信)。

为了避免在我的数据中出现具有相同 category_id 和 post_id 组合的重复行的可能性,对于Rails 中缺少复合键的最佳解决方法是什么?

我的假设是:

  1. 在这种情况下,默认的自动编号列 (id:integer) 不会保护我的数据。
  2. ActiveScaffold 可能会提供一个解决方案,但我不确定仅仅为了这个单一功能将它包含在我的项目中是否有点矫枉过正,特别是如果有更优雅的答案。
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 投票
4 回答
2624 浏览

nhibernate - nHibernate - 存储过程和复合键

我正在尝试使用 nHibernate 将存储过程的输出映射到我的项目中的对象。

该对象的定义如下:

映射如下所示:

存储的 proc 调用是正确的,我得到的结果类似于 SalesRoleId 266(例如):

如果没有复合键(仅使用 CMIId),它工作得很好,除非有 2 个结果(如上)共享一个 CMIId ......第二个被第一个覆盖。

我必须使用复合键,CMIId/FeatureId 是逻辑组合。

当我现在运行它时,我得到一个异常:

0 投票
2 回答
977 浏览

asp.net - 我应该为映射表使用复合键,它也用于外键吗?

我正在使用 ASP.NET 和实体框架来制作网站。我目前有一个映射表,用于...假设用户和足球队之间的多对多关系。所以:

用户
团队用户
团队

第 1 部分:为映射表的主键使用复合键是最佳实践吗?换句话说:

UserTeams
PK UserId
PK TeamId
PreferenceId

第 2 部分:需要注意的是我还有另一张桌子。我们称之为“UserTeamPredictions”,它存储用户对给定团队每年的预测。该表有一个指向映射表的外键。所以它看起来像这样:

UserTeamPredictions
PK UserTeamPredictionId
FK UserId
FK TeamId
预测 PredictionYear

这在实体框架中似乎工作正常,但是,在我使用的第三方控件中引用关系时,我遇到了一些问题,例如 Telerik。即使它可能不是理想的数据设置,我是否应该更改表结构/关系,以便在代码中更容易使用数据绑定和其他东西?

更改是向 UserTeams 映射表添加一个整数主键,允许 UserTeamPredictions 表直接引用该键,而不是像当前那样通过复合键:

UserTeams
PK UserTeamId
FK UserId
FK TeamId
PreferenceId

UserTeamPredictions
PK UserTeamPredictionId
FK UserTeamId
预测 PredictionYear

你怎么看!?