问题标签 [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.
java - Hibernate:带有继承的 NaturalId
我有以下实体(短版):
学生组:
百人队:
队列:
所以我有一个 GroupOfStudents 的 CourseLecture。有不同的 GroupOfStudents,例如 Centuria 或 Cohort。但我希望 Cohort 的 number 字段是 NaturalId。这将导致错误:
但是为什么我只能在根实体上使用 @NaturalId 呢?如何在不破坏类继承的情况下解决这个问题?
java - 为什么@NaturalId 不在数据库中创建唯一约束?
我正在关注 Entity-Snipped
如果我尝试将同名实体保存两次,则会出现以下错误(如预期的那样):
令我吃惊的是,如果我查看数据库中的表约束,我什么也看不到。不应该有一个唯一的约束吗?
Postgres 9.3.2 休眠 4.2.0
编辑:之前的这篇文章具有误导性,因为我减少了事实以简化情况。通过这样做,我使这篇文章不一致!
@Vlad 是对的,但我意识到问题出在其他地方。
我想写的是还有其他几个使用@NaturalId 的实体。Hibernate 尝试创建名称为 _UNIQUEKEY 的所有约束。(缺少前缀)
只有第一个是真正创建的。所有其他的都抛出这个异常:
在我看来,唯一键名没有正确构建,可能是一个错误?
rest - 电子邮件地址作为 REST API 中的资源标识符
假设我的应用程序有用户,每个用户都由他们的电子邮件地址唯一标识。在这种情况下,使用电子邮件的自然键而不是使用自动递增的 ID 作为主键是有意义的,这在大多数系统中都很常见。
然后,在我的 REST API 中,可以像这样访问特定用户吗?
传统上,您会使用用户 ID 代替john@smith.com
,但在我的应用程序中,电子邮件地址是用户帐户的唯一标识符。
你会选什么?使用电子邮件作为 REST URL 中的自然键或创建用户 ID 字段来代替使用?
php - Phalcon PHP:更新主自然键
有没有一种好方法可以更新在 Phalcon 中具有自然键的表?
考虑这张表:
我们将假设 person 字段是唯一的并且是主键。我尝试执行以下操作:
Phalcon 最终尝试做的是插入新记录,而不是更新现有记录。我需要它做的是 UPDATE ... WHERE person = 'Ed';
想法?
谢谢!
java - 使用 Hibernate @NaturalId 查找实体有什么好处
使用 Hibernate 的 @NaturalId 查找对象有什么好处吗?
我担心 Hibernate 执行两个查询以使用 @NaturalId 获取对象。第一个查询只是为了获取 id,第二个查询是为了加载真实的对象。
java - Hibernate 通过 natural-id 查询子类型实体
我使用 Hibernate 并希望通过其自然标识符查询实体。但是,似乎不可能在子类型上使用自然 id。我有两个类 A 和 B,其中 B 扩展 A:
A
在 Hibernate 中使用自己的标识符进行映射。B
被映射为连接的子类。B
但是,在 Hibernate 中映射自然标识符是不可能的,因为映射B
是子类映射。
为什么不可能在子类上有一个自然标识符
B
?请注意,我不希望 Hibernate 生成我的数据库模式,我只想拥有自然 id 以实现快速缓存命中。有没有一种方法/最佳实践可以在子类型上使用自然 id 以进行快速二级缓存查询?
- 当自然 id 在极少数情况下可能会更新(更改)并且必须在集群 Java EE 环境中维护缓存时,这是否仍然可能?
mysql - MySQL/Percona:日期范围数据完整性(通过自然键)
我正在创建一个日程表,让用户能够在他们的网站上安排某些项目。该表看起来像这样,基本上:
我正在尝试创建一个有意义的自然键(唯一键)。从技术上讲,自然键应该类似于 [item_id, date range],其中日期范围不能重叠。但显然,我需要在现实世界中可行的东西:)
我能做些什么来设置一个有意义的唯一/自然键吗?
谢谢!
python - 自然键导致 Django 测试失败
考虑一个干净的 django 1.7.7 项目,其中包含一个名为 testrunner 的应用程序。
模型如下所示:
在我设置的 settings.py'tests.Contact'
中AUTH_USER_MODEL
。
此设置是一个干净的测试,用于复制我在更大环境中遇到的错误。问题是如果没有创建测试数据库失败,我就无法运行 django 测试:
当我def natural_key(self)
从关系模型中删除时,一切正常。我们想在我们的固定装置的关系模型上使用 natural_key,但无法让它与 django 测试一起使用。
我究竟做错了什么?
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 命名空间?
data-warehouse - 自然键和事实表
我是维度建模的新手,我相信你们可以帮助我解决以下问题。
在生产系统中,我有一个事务表,例如销售表。唯一标识符是一个名为 SaleId 的主键。例子:
我的疑问是在对事实表进行建模时,SaleID 是否应该作为 NaturalKey 包含在事实表中?
Fact 表也应该有一个 SurrogateKey 吗?
请随时向我发送任何链接作为参考。提前致谢