问题标签 [natural-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 投票
1 回答
428 浏览

java - Hibernate:带有继承的 NaturalId

我有以下实体(短版):

学生组:

百人队:

队列:

所以我有一个 GroupOfStudents 的 CourseLecture。有不同的 GroupOfStudents,例如 Centuria 或 Cohort。但我希望 Cohort 的 number 字段是 NaturalId。这将导致错误:

但是为什么我只能在根实体上使用 @NaturalId 呢?如何在不破坏类继承的情况下解决这个问题?

0 投票
2 回答
864 浏览

java - 为什么@NaturalId 不在数据库中创建唯一约束?

我正在关注 Entity-Snipped

如果我尝试将同名实体保存两次,则会出现以下错误(如预期的那样):

令我吃惊的是,如果我查看数据库中的表约束,我什么也看不到。不应该有一个唯一的约束吗?

Postgres 9.3.2 休眠 4.2.0


编辑:之前的这篇文章具有误导性,因为我减少了事实以简化情况。通过这样做,我使这篇文章不一致!

@Vlad 是对的,但我意识到问题出在其他地方。

我想写的是还有其他几个使用@NaturalId 的实体。Hibernate 尝试创建名称为 _UNIQUEKEY 的所有约束。(缺少前缀)

只有第一个是真正创建的。所有其他的都抛出这个异常:

在我看来,唯一键名没有正确构建,可能是一个错误?

0 投票
2 回答
1391 浏览

rest - 电子邮件地址作为 REST API 中的资源标识符

假设我的应用程序有用户,每个用户都由他们的电子邮件地址唯一标识。在这种情况下,使用电子邮件的自然键而不是使用自动递增的 ID 作为主键是有意义的,这在大多数系统中都很常见。

然后,在我的 REST API 中,可以像这样访问特定用户吗?

传统上,您会使用用户 ID 代替john@smith.com,但在我的应用程序中,电子邮件地址是用户帐户的唯一标识符。

你会选什么?使用电子邮件作为 REST URL 中的自然键或创建用户 ID 字段来代替使用?

0 投票
3 回答
413 浏览

php - Phalcon PHP:更新主自然键

有没有一种好方法可以更新在 Phalcon 中具有自然键的表?

考虑这张表:

我们将假设 person 字段是唯一的并且是主键。我尝试执行以下操作:

Phalcon 最终尝试做的是插入新记录,而不是更新现有记录。我需要它做的是 UPDATE ... WHERE person = 'Ed';

想法?

谢谢!

0 投票
3 回答
2438 浏览

java - 使用 Hibernate @NaturalId 查找实体有什么好处

使用 Hibernate 的 @NaturalId 查找对象有什么好处吗?

我担心 Hibernate 执行两个查询以使用 @NaturalId 获取对象。第一个查询只是为了获取 id,第二个查询是为了加载真实的对象。

0 投票
2 回答
633 浏览

java - Hibernate 通过 natural-id 查询子类型实体

我使用 Hibernate 并希望通过其自然标识符查询实体。但是,似乎不可能在子类型上使用自然 id。我有两个类 A 和 B,其中 B 扩展 A:

A在 Hibernate 中使用自己的标识符进行映射。B被映射为连接的子类。B但是,在 Hibernate 中映射自然标识符是不可能的,因为映射B是子类映射。

  • 为什么不可能在子类上有一个自然标识符B?请注意,我不希望 Hibernate 生成我的数据库模式,我只想拥有自然 id 以实现快速缓存命中。

  • 有没有一种方法/最佳实践可以在子类型上使用自然 id 以进行快速二级缓存查询?

    • 当自然 id 在极少数情况下可能会更新(更改)并且必须在集群 Java EE 环境中维护缓存时,这是否仍然可能?
0 投票
1 回答
29 浏览

mysql - MySQL/Percona:日期范围数据完整性(通过自然键)

我正在创建一个日程表,让用户能够在他们的网站上安排某些项目。该表看起来像这样,基本上:

我正在尝试创建一个有意义的自然键(唯一键)。从技术上讲,自然键应该类似于 [item_id, date range],其中日期范围不能重叠。但显然,我需要在现实世界中可行的东西:)

我能做些什么来设置一个有意义的唯一/自然键吗?

谢谢!

0 投票
2 回答
428 浏览

python - 自然键导致 Django 测试失败

考虑一个干净的 django 1.7.7 项目,其中包含一个名为 testrunner 的应用程序。

模型如下所示:

在我设置的 settings.py'tests.Contact'AUTH_USER_MODEL

此设置是一个干净的测试,用于复制我在更大环境中遇到的错误。问题是如果没有创建测试数据库失败,我就无法运行 django 测试:

当我def natural_key(self)从关系模型中删除时,一切正常。我们想在我们的固定装置的关系模型上使用 natural_key,但无法让它与 django 测试一起使用。

我究竟做错了什么?

0 投票
1 回答
359 浏览

entity-framework - 如何创建考虑 EF 的 DatabaseGenerated 属性的自定义 MvcView 脚手架

是的,我有一个项目,我正在使用我的 EF 6.x 实体,就好像它们也是我的 ViewModels - 我没有 AutoMap - 我已经研究并了解了风险。

我的数据库有很多自然键。在我的 Code First POCO 中,我的属性如下所示:

我正在尝试编辑脚手架模板(我的项目通过 SideWaffle VSIX 具有“CodeTemplates”目录),并且我特别试图影响默认为 MvcView/Edit.vb.t4 生成的剃须刀

由于关键是反映回模型绑定器的重要信息,因此默认脚手架呈现隐藏输入,但是,在它是 DatabaseGeneratedOption.None 的情况下 - 我希望它会呈现一个额外的可见标签,以便用户很容易理解什么'ProfileId ' 他们正在编辑。

换句话说,默认脚手架假定代理键在视图中不感兴趣,但是,我的键对我的视图很有趣。

我对作为实现此目标的 System.Web.Mvc 命名空间的一部分的 <HiddenInput(DisplayValue:=True)> DataAnnotation 不感兴趣。我现在确实想让我的 EF 项目不受 MVC 库的影响。

我可以很容易地看到当前的 MVC 脚手架如何从传入的 ModelMetadata 参数(Microsoft.AspNet.Scaffolding.Core.Metadata.ModelMetadata 类型)迭代各种类型的 PropertyMetadata

但是,我如何跨越并获取这个 DatabaseGenerated 属性,我认为它源自 System.Data.Metadata.Edm 命名空间?

0 投票
2 回答
1311 浏览

data-warehouse - 自然键和事实表

我是维度建模的新手,我相信你们可以帮助我解决以下问题。

在生产系统中,我有一个事务表,例如销售表。唯一标识符是一个名为 SaleId 的主键。例子:

在此处输入图像描述

我的疑问是在对事实表进行建模时,SaleID 是否应该作为 NaturalKey 包含在事实表中?

在此处输入图像描述

Fact 表也应该有一个 SurrogateKey 吗?

请随时向我发送任何链接作为参考。提前致谢