问题标签 [shared-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 投票
2 回答
64 浏览

mysql - 使用共享主键检索mysql中的最后一行

我有一个主键为 2 个值的表 - id 和时间戳。该表包含每个 item_id 的多行,时间戳是使其唯一的原因。考虑到这种设置,我可以执行有效的查询吗?我想找到 item_id 的最新外观。有任何想法吗?

0 投票
1 回答
1864 浏览

java - @PrimaryKeyJoinColumn 没有选择共享密钥

我之前让@PrimaryKeyJoinColumn 工作过,现在我正在尝试使用spring boot,但我不知道我错过了什么,这很奇怪,因为我似乎做对了所有事情:

人物类:

部门类:

服务等级:

这就是我在 DB 中得到的: Person 表:

部门表:

期望的输出:两个 ID 应该相同(Person ID 应该是 18 而不是 13)有什么想法吗?


更新:休眠总是尝试插入没有 ID 的人员,所以如果我从人员 ID 中删除自动增量并尝试插入现有部门的人员,我会得到:


更新 2: 似乎 @PrimaryKeyJoinColumn 不会将 ID 生成处理为部门类,所以我需要使用生成器。我想知道,因为相同的注释在继承中起作用,而对子类的 ID 没有做任何事情。所以我期待一个答案来解释为什么 ID 生成在 Inheritance join 中起作用,而 OneToOne 需要一个生成器

0 投票
1 回答
128 浏览

sql-server - 向 1:1 相关表中插入行

我想将新行放入 1:1 相关的表中sql-server这些表的图表

如您所见,表使用相同的主键相互引用。这就是问题所在——我知道用两个INSERT调用放置数据会抛出一个错误,说我违反了 PK 约束。有没有办法在代码中执行此操作?我想创建一个存储过程,用于添加“初级产品”(SUROWCE)并对应于“库存”(STAN)中的记录。

我的代码尝试: INSERT INTO STAN VALUES(25, 5, 1000); INSERT INTO SUROWCE VALUES(25, 'wood');

Msg 547, Level 16, State 0, Line 4 The INSERT statement conflicted with the FOREIGN KEY constraint "FK_STAN_SUROWCE". The conflict occurred in database "TestBazyDanych", table "dbo.SUROWCE", column 'ID_SUROWCA'.

0 投票
0 回答
52 浏览

java - 如何使用休眠@ID 实现共享主键

我的数据库中有两个表。第一个表自动生成它的主键,我希望第二个表从第一个表的 PK 中获取它的主键。是否可以使用休眠来实现这一点,因为当我在第二个表的 PK 列上不包含 @GeneratedValue 标记时,它会引发错误。

0 投票
1 回答
176 浏览

java - 如何确保休眠 5 在与共享主键的一对一关系中保持正确的顺序

TLDR:将休眠版本从 3. 切换到 5 .. 现在,与仅在一个类中映射的共享主键的 OneToOne 关系以错误的顺序保留两个实体,违反了外键约束。如何更改订单?

在从 jboss 7 实例迁移到当前 wildfly 的过程中,我的团队还必须将我们的休眠版本从 3 更新到 5.3.10。

在此过程中,我遇到了一个实体构造问题,我在其中遇到了一堵砖墙。

一般概念如下:

我有一个主实体类,它有多个“模块”作为属性,它们共享主实体类的主键。这些模块本身就是实体类,并拥有各种逻辑和进一步的关系。但是,模块实体没有任何其他持久属性。它们也没有对主要实体类的引用。

在这方面,它是(在 Java 的面向对象世界中)与共享主键的单向关系(我理解共享主键使其对数据库是双向的)。

Java 代码将是这样的:

在我们以前的系统中,这工作得很好。当使用类似的东西时

模块将首先被持久化,然后是 mainEntity。

然而,在我们更新的休眠版本中,情况并非如此。使用这个映射,插入顺序被颠倒,entityManager 将首先尝试持久化 mainEntity。这会导致违反应防止表之间不一致的外键约束。

附带说明:我尝试更改

进入

这实际上正确地改变了持久性顺序。但是,这样做会导致休眠不再正确理解共享主键 -> 虽然由于某种原因持久化工作,

不起作用,产生诸如“列 mainEntity.moduleA_id 不存在”之类的错误。

有没有一种方法可以表达需要先持久化模块,就像 Hibernate 3 为我们所做的那样?

我将不胜感激任何帮助。

PS:这是我的第一个问题,如果需要更多信息,或者配方有问题,请告诉我。:)

0 投票
1 回答
2264 浏览

laravel - 如何在 Laravel 中定义和使用外键作为主键?

我有一个用户表,可以存储 8 种不同类型的用户。根据用户类型,我还有一些其他表,其中包含特定的数据集。因此,我想同时使用用户表中的 ID 作为这些表的外键和主键。但是我是 Laravel 的新手,我不知道如何做到这一点以适应惯例,或者,如果不可能,在定义我的模型和一对一关系时如何做到这一点。有人能帮我吗?谢谢!

编辑:对不起,我认为我的解释不够清楚。假设我有 4 个表:users、user_types、customer_organzations、partners 和 customers。我想使用 ID,即用户的 PK,作为表 customer_organizations、合作伙伴和客户的外键和主键,这些表具有不同的信息,因为它们是我的应用程序中不同类型的用户,但他们都登录用户表。我不在乎 user_types 表。我想我知道如何处理它。

0 投票
1 回答
36 浏览

jpa - 如何使用自动生成的主键(也是另一个表的外键)使用 JPA 插入数据?

我有两张桌子。结构是

个人表 Auto Id Number, int, Primary Key | 姓名,Varchar | 年龄,诠释 |

人口统计表 Auto id number, int, foreign key | 地址,varchar |

我创建了如下实体类:

个人实体类

DemographicEntity.class

道类

我将 jpa 与 Microsoft SQL 一起使用。我想先将数据插入到 Personal 表中,db 会自动生成一个主键。该主键是人口统计表的外键。当我打电话给persist()我时,我得到了错误

INSERT 语句与 FOREIGN KEY 约束冲突。无法执行语句;约束(空)

我在这里做错了什么?我想在个人表中插入数据并使用自动生成的键,我想在人口统计表中插入数据