问题标签 [composite-primary-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 投票
3 回答
18442 浏览

java - JPA/Hibernate: What's better for composite primary keys, @IdClass or @EmbeddedId implementations and why?

what's better for JPA/Hibernate composite primary keys, @IdClass or @EmbeddedId implementations and why?

This is an intentionally naive question. I decided to use @EmbeddedId (for whatever reason) and I feel like I made the wrong choice. Dereferencing the embeddedId that contains the column properties is redundant and quite error-prone when coding.

Are there any more reasons for and/or against the other? Is the a recommendation by the JPA (spec)?

0 投票
3 回答
3878 浏览

java - JPA 1.0 使用带有 *nested* 复合主键的 @IdClass 的限制?

给定以下示例(部门 - 项目):

部门具有以下属性(复合主键):

这里是PK类:

项目与部门之间的关系是多对一的,即一个部门可以有多个项目。Project 类本身使用引用 Department 的复合键的复合键。重要提示:这只是关于@IdClass 而不是@EmbeddedId 的实现。

然后(有问题的)JPA 1.0 @IdClass 实现必须看起来像这样(冗余的 deptNum 和 deptCtry 属性):-> 它只是部门内的唯一名称

项目 ID 是:

问题在于 Hibernate 和 EclipseLink 都不知道如何将 Project 中的两个冗余属性 deptNum 和 deptCtry 映射到 DeptId 中的 dept 属性(或其中的属性)。-> MappingException 等。

我的问题是:

这是 JPA 1.0 的限制吗,具有组合键的表引用具有 @IdClass 实现的其他组合键通常不起作用,因为 JPA 实现根本不知道如何映射这些字段?

作为一种解决方法,您必须对这些类使用@EmbeddedId 或使用JPA 2.0 语法来用@Id 注释@XToX 关联。我只是想确保我对此的看法是正确的。

谢谢

0 投票
1 回答
119 浏览

java - 您如何告诉 Hibernate 您的实体类映射采用 JPA 1.0 语法?

这是一个后续行动

JPA 1.0 使用带有 *nested* 复合主键的 @IdClass 的限制?

EclipseLink 附带了一个 javax.persistence_1.0.0.jar,我也将它放到了类路径中,因此它可以知道我的实体类的版本。但是 Hibernate 是如何知道实体类在 JPA 1.0 中的呢?可以做到吗?如果是这样,怎么做?

0 投票
1 回答
446 浏览

sql - 如何在 SQL 中从复合主键迁移到单个属性键?

我想将使用复合主键的表迁移到唯一主键。

我的表如下:

表 REGM 使用 LNG_CD 和 REG_NRI 作为复合主键。我想改用主键名称 REGM_PK,但仍使用 LNG_CD 和 REG_NRI 作为外键。

到目前为止,这是我的方法:

1 - 放弃约束

2 - 添加主键列

3 - 创建序列

4 - 用序列填充列

5 - 使 REGM_PK 列不为空

6 - 创建主键约束

到目前为止,我在第 4 步被阻止

我知道我也可以创建/复制日期/删除表。但我更愿意以 SQL 方式进行。

0 投票
1 回答
1363 浏览

java - 如何使用具有多列/复合主键(JPA 1.0 @IdClass)的表实现继承?

给定下表:

您将如何使用 JPA 1.0 @IdClass 注释来实现实体和复合主键类?

出现的子问题是:

  1. 子类是否定义了自己的 ID 类?
  2. 如果是这样,它们是否继承自超类的 ID 类?
  3. 子类是否获得 @IdClass 注释?

请注意,这个问题是故意幼稚的。我想看看类声明,没有getter和setter的带有字段访问注释的属性可能就足够了。

谢谢

0 投票
1 回答
883 浏览

ruby-on-rails - Ruby 错误没有要加载的文件——composite_primary_keys

我是 Rails 新手,但我需要在运行 Ruby 1.9.2 和 Rails 3 的应用程序中使用复合主键。我无法让复合键在我的 Ruby on Rails 应用程序中正常工作。我已按照复合键站点中的说明进行操作,但仍然遇到相同的错误:没有要加载的文件--composite_primary_keys

1 - sudo gem install composite_primary_keys
2 - 在 conf/environment.rb 文件的末尾添加 require 'composite_primary_keys'
3 - 添加 set_primary_keys

我的宝石列表如下所示:

我的域类如下所示:

我的环境文件如下所示:

当我运行“rake test”时,我得到的错误如下:

单元测试是:

我检查了以下线程,但这不适用。我已经检查了我的耙子、宝石等。
谢谢大家!;)

0 投票
3 回答
3867 浏览

hibernate - JPA / Hibernate中的复合键与继承类

我在我的类结构上定义了一个复合 ID,如下所示。不幸的是,我总是收到一个休眠错误,抱怨找不到“part2”:

“在实体 MoreClass 中找不到 @IdClass 的属性:第 2 部分”

有人可以帮我解决问题吗?(或者至少指出我有用的 jpa/hibernate 文档?)

0 投票
1 回答
165 浏览

mysql - 具有多字段主键的MySql问题

我有一个表,它的主键是由三列构建的。在另一个表中,我想将它们作为一个单列外键引用。如何解决?也许是一个 id 别名?或者如何解决?

0 投票
2 回答
1935 浏览

android - 插入具有复合主键的 android sqlite3 表时出现问题

我有一个包含复合主键的表,我无法插入。用于创建表的代码是:

我遇到的问题是,当我要插入的记录的值对于 CourseId 或 EventName 列可能不是唯一的,但它们是 2 的唯一组合。例如,如果我尝试运行以下 2 个插入:

我收到以下错误:

并且第二次插入没有进入数据库。为什么会出现这个错误?我认为复合主键要求两个值的组合是唯一的。在我上面的插入中,EventName 列的值是不同的,即使 CourseId 的值是相同的。这不应该被视为 2 个独特的组合,因此不应该被视为 2 个不同的主键吗?

我的表需要能够为每个 CourseId 保存几个不同的事件,但每个事件对于每个课程都必须是唯一的。我需要能够将值插入到表中,例如:

EventName CourseId 作业 1 60-415 项目 1 60-415 作业 2 60-415 项目 2 60-415 作业 1 60-367 项目 1 60-367

等等。谁能告诉我如何让它工作?为什么这些复合 PK 不被视为唯一条目?任何帮助将非常感激。


这是我用于插入的 java 函数:

这会导致问题吗?

0 投票
1 回答
5127 浏览

java - 如何使用休眠映射文件中的两列加入标签?

我需要将一个类映射到两个表(都具有多列主键)。假设 TABLE1 有 id1,id2,id3 并且 TABLE2 有 id1,id2 作为主键。现在在编写映射文件时,我会执行以下操作:

如您所见,连接标签只接受一个键标签!如何映射第二个 id?

亲切的问候,
暴君
PS:圣诞快乐,新年快乐,富有成效;)