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

java - JPA 中的复合键

我想创建一个实体,它有一个自动生成的主键,还有一个由其他两个字段组成的唯一复合键。我如何在 JPA 中做到这一点?
我想这样做是因为主键应该用作另一个表中的外键,并且使其复合并不好。

在以下代码段中,我需要命令和模型是唯一的。pk 当然是主键。

0 投票
1 回答
6336 浏览

jpa - JPA - 具有复合键的表与其自身的多对多关系

我想使用 JPA 注释创建一个表(RoutePlace)与其自身的多对多关系。我想加入的表的独特之处在于它有一个复合键。

示例:https ://h4losw2.files.wordpress.com/2008/10/tables.png

替代文字

有什么建议么?

提前致谢

0 投票
1 回答
418 浏览

.net - ORM 对复合主键的支持

我读过复合主键会混淆典型的 ORM 代码生成器。哪些 ORM 最适合复合 PK,哪些应该避免?(我对 .NET 特别感兴趣)

0 投票
1 回答
1617 浏览

mysql - MySQL SELECT LAST_INSERT_ID() for compound key. Is it possible?

Can I get the LAST INSERT ID() for a compound key in MySQL?

0 投票
3 回答
768 浏览

sql-server - 非规范化数据或多列键?

我试图在实现小型 SQL Server '08 数据库时做出判断。

我正在将平面文件数据库的输出文本文件从旧的 COBOL 系统转换为上述 SQL Server 数据库。它是一个车辆和房地产贷款数据库,可以通过 Lender ID(七位数)、银行帐号(15 位数)和“账户后缀”(两位数)的组合来唯一标识。

我承认我在数据库管理方面非常天真(老实说,直到我现在的职位才真正做到这一点),并且我正在尝试确定两种方法中哪一种是我实施的最佳选择将索引到其他几个表的键:

1) 使用上述值的三列键标识每笔贷款,或
2) 通过实施“键”列来非规范化数据,该列是组合三个值的 24 个字符的字符串。

非规范化是丑陋的,当然,但我无法预料会发生更新异常,因为贷款无法在银行之间来回传递或更改其贷款后缀。这些值的变化保证是不同的帐户。

复合键更优雅,但我读过一些论文表明它是一件坏事。

那么,哪个选项可能是更好的选择,更重要的是,为什么?

0 投票
3 回答
24592 浏览

database - 使用 Django 的复合/复合主/唯一键

如何使用 Django 创建具有复合(复合)主/唯一键的模型(以及表)?

0 投票
5 回答
110947 浏览

sqlite - SQLite 表约束 - 在多个列上唯一

我可以在 SQLite 网站上找到语法“图表”,但没有示例,我的代码崩溃了。我有其他表在单列上具有唯一约束,但我想在两列上向表中添加约束。这就是我所拥有的导致 SQLiteException 消息“语法错误”的原因。

我这样做是基于以下几点:

表约束

需要明确的是,我提供的链接上的文档说CONTSTRAINT name应该在我的约束定义之前。

不过,可能导致解决方案的事情是,我带括号的列定义之后的任何内容都是调试器所抱怨的。

如果我把

错误在“CONSTRAINT”附近:语法错误

如果我把

错误接近“唯一”:语法错误

0 投票
2 回答
7653 浏览

java - 带有 @EmbeddedId 的 JPA 复合键

在旧数据库中,我有三个表:Users、Workgroups 和 UsersWorkgroup。UsersWorkgroup 存储用户在工作组中的角色。以下是相关的代码片段:

当然,问题是,它不起作用。目前我得到这个例外:

异常描述:在 [class entity.Workgroup] 和 [class entity.UsersWorkgroup] 之间遇到了不兼容的映射。这通常发生在映射的基数与其反向指针的基数不对应时。

我不明白,因为 OneToMany 应该匹配 ManyToOne ......还是它是 ManyToMany 关系?如果我切换到@ManyToMany,我会得到:

异常描述:无法确定类 [class com.ericsson.rsg.ejb.entity.UsersWorkgroup] 上的关系属性 [workgroup] 的目标实体。不使用泛型时,请确保在关系映射上定义目标实体。

我试图理解复合键(嵌入式),但我能找到的所有示例都只有简单的列,而不是外键(但这就是复合键的全部意义,不是吗?)。UsersWorkgroup 表可以偷偷成为一个连接表吗?

我应该将 PK 类声明为严格的 POJO 类吗?还是应该将@JoinColumn 注释放在PK 类中?如何从另一个表中引用复合键中的列?我应该在引用类构造函数中初始化 PK 对象,还是没有必要?

我觉得完全卡住了。

0 投票
1 回答
7594 浏览

mysql - 无法将 java.lang.Integer 字段 id 设置为 org.hibernate.id.IdentifierGeneratorHelper

我需要使用 Jpa 2/Hibernate 3.5.1 将一些数据存储在 MySQL 数据库中。由于遗留原因,我要存储数据的表具有复合主键。主键的第一部分是 INTEGER 类型(自动增量值),第二部分是 BIGINT 类型(Java 代码中的 Long - 在持久化之前手动设置)。

我已经通过@IdClass-Annotation 实现(堆栈跟踪下方的示例代码)组合主键,第一个键部分也有一个生成策略集:@GeneratedValue(strategy = GenerationType.IDENTITY)

当试图用这样的代码持久化一个对象时

抛出以下异常:

我的实体类如下所示:

组合主键:

测试表是使用以下语句创建的:

将 GenerationType 更改为 TABLE 将使其工作,但会以 ~32.000 的步长生成 idPartOne 值。不幸的是,另一个应用程序在没有 JPA/Hibernate 的情况下使用了这个完全相同的数据库表,并且很好地以 1 的步长递增了这个 id-part。

要求无论哪个应用程序将数据存储到该表中,都以相同的方式生成 id(即 id 递增 1)。实现这一目标的最佳解决方案是什么?提示,我们不能更改其他应用程序!

非常感谢任何帮助。

谢谢,

马库斯

0 投票
1 回答
1095 浏览

sql-server - 使用复合键 + 外键作为复合键创建表

我在 SQL Server Compact 中创建数据库时遇到问题

我基本上有 5 张桌子(CentreDeCout、Profil、Groupe、CCProfilPivot、CCProfilGroupePivot)

CentreDeCout 以 NomCC 作为主键
Profil 以 NomProfil 作为主键

CCProfilPivot 以 NomCC 和 NomProfil 作为主键(参考 CentreDeCout 和 Profil 主键)

Groupe 将 NomGroupe 作为主键

我需要 CCProfilGroupePivot 将 CCprofilPivot 和 NomGroupe 的主键作为其主键。

所以主键是 NomCC、NomProfil 和 NomGroupe。
NomCC 和 NomProfil 将取自 CCProfilPivot,NomGroupe 取自 Groupe

我就是这样做的

最后一个创建表给了我这个错误

p>

谁能帮帮我吗?

谢谢吉比特