问题标签 [id-generation]

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 回答
3841 浏览

java - 本机和增量 id 生成器类型之间的区别

native我们在hibernate中使用和increment类型id生成器之间的基本区别是什么。

因为我有一个实体,其中的发电机以前是native,但后来改变incremental了一段时间,它工作正常。但是就在昨天,当我再次更改native为时,插入失败说Contraint Violation

我在字段中设置了索引id,它是自动生成的。

我在这里错过了什么吗?

谢谢

0 投票
3 回答
44826 浏览

hibernate - Hibernate with Oracle 序列不使用它

我已将休眠配置为使用 oracle 序列。使用 cache=20,increment=1 创建序列。

一切正常,休眠持久实体。id值很奇怪:50,51....76,201,202...209,1008,1009,5129,5130 ....

如果我要求序列值(从 dual 中选择 hibernate_sequence.nextval),我得到的值类似于 2,3,4 ....

如果我打开休眠 sql 调试,有时会调用“select hibernate_sequence.nextval from dual”但是休眠分配给 ID 的数字不会按顺序传递!

0 投票
1 回答
1048 浏览

.net - Fluent nHibernate AutoMapping & ID 生成方案

如何使用 Fluent NHibernate(带 AutoMapping)将默认 ID 生成方案配置为 Guid.Comb?我可以看到我可以在每个实体(或基类)中指定以下代码:

这很好。然而,这似乎并没有将默认行为设置覆盖它。我只想知道我是否缺少配置技巧。

谢谢你的帮助

0 投票
2 回答
3356 浏览

hibernate - 休眠。增强的标识符生成器

我决定使用满足以下要求的 Hibernate id 生成器: - 当从不同的应用程序(不同的 JVM)访问域时安全 id 生成 - 使用 id 间隔(每次新 ID 时不要查询数据库需要)

经过一些调查,我选择了 2 个休眠增强标识符生成器之一,它是

org.hibernate.id.enhanced.TableGenerator

问题是该算法在数据库中保留的不是下一个可用值,而是下一个可用间隔的结束,所以,假设我有一个 increment_size 为 10 的 id 生成器,当我请求一个 id 时,我收到间隔 1 - 10,但现在在数据库中存储的不是值 11,而是 21。通过这种行为,我必须在映射到特定表的所有类中保持 increment_size 相同。为什么会有这种行为?有没有什么办法解决这一问题 ?

0 投票
2 回答
3718 浏览

oracle - Oracle 插入前触发器和 Hibernate id 生成器设置

我有一个保存在 Oracle 模式中的实体。在 DB 插入时,触发器使用 DB 序列生成实体 ID。使用触发器是强制性的,因为它还会更新 ID 生成序列(一种日志表)旁边的另一个表,这对于遗留组件很重要。

如何在我的实体映射中配置 Hibernate id 生成器?

环顾类似的 Stackoverflow 问题,我发现了一些不适合我的解决方案:

  1. 直接使用序列:<generator class="sequence">...</generator>. 这是不可能的,因为其余的触发代码不会被执行
  2. 使用<generator class="select">...</generator>which 表示插入后,Hibernate 使用另一个唯一属性选择实体(根据 Hibernate-3.3 手册 5.1.4.6. )。这在此处也是不可能的,因为没有其他唯一列并且不支持使用一组属性。
  3. 打电话前使用<generator class="assigned">...</generator>和设置假身份证save()。DB 触发器将忽略此 ID,并且生成的 DB 行将具有正确的 ID。但是,我的 Java 实例没有,而且这个解决方案很难看,因为它对触发器的实现做出了假设。

这个问题有好的解决方案吗?

0 投票
4 回答
165196 浏览

java - 使用 JPA 和 Hibernate 时如何选择 id 生成策略

我正在阅读 Hibernate 参考指南的 Id generation 部分和“java persistence with Hibernate”

结合 Hibernate 和 JPA 有很多可用的选项。

我正在寻找有关如何选择特定 id 生成策略的进一步文档。

我也在寻找引爆点。

例如,hilo 策略有望减少争用。我假设必须有与此选择相关的权衡。

我想接受有关权衡的教育。

有没有可用的文献?

0 投票
2 回答
1727 浏览

razor - 我如何知道 Razor Html 助手生成的 id 是什么?

在 Razor 视图中,假设我有这样的东西:

在这里,“Värde”是瑞典语的“价值”。注意它包含“ä”。为此,Razor 将生成如下 HTML:

请注意,元素的 id 是“V_rde”,而不是“Värde”。

那么,如何使用 getElementById 从 JavaScript 访问此元素?我知道我可以使用“V_rde”,但我想要一些通用的东西,而不仅仅是“Värde”,像这样的东西(意思是 htmlAttributes 参数):

我希望 @Html.IdFor(string name) 转换名称,就像在标签、复选框、编辑框等的 @Html 帮助器中转换的 id 一样。

0 投票
1 回答
30475 浏览

hibernate - @GeneratedValue with strategy=GenerationType.AUTO 在重启后生成重复值

我有一个休眠实体,其 ID 配置为

新元素的创建在第一次运行时可以正常工作。但是,如果我重新启动我的应用程序并取回记录,下次我尝试持久化此实体时,hibernate 会尝试使用未重新启动应用程序时生成的相同 ID。

我收到以下错误,当使用跟踪选项运行时,我能够看到该 ID 正在被重用

*Hibernate: 插入 org_myEntity (entitiyJID, entityName, id) 值 (?, ?, ?) org.hibernate.util.JDBCExceptionReporter
SQL 错误: 20000, SQLState: 23505 org.hibernate.util.JDBCExceptionReporter 该语句被中止,因为它会在“TABLE_NAME”上定义的“SQL120725164357680”标识的唯一或主键约束或唯一索引中导致重复键值。org.hibernate.event.def.AbstractFlushingEventListener
无法将数据库状态与会话 org.hibernate.exception.ConstraintViolationException 同步:无法*

顺便说一句,我使用的是 hibernate 3.3.2.GA、javax.persistance 2.0.0 和 Derby 10.5.1 数据库

有人知道我这一代可能出了什么问题,我该如何解决?

0 投票
1 回答
2939 浏览

c - 创建唯一标识符 - 纯 C

我正在编写一个玩具操作系统,我需要一种创建唯一标识符的方法(如 WindowsHANDLE除外)。这需要是纯 C/ASM 数学;如果可能的话,我不想依赖任何东西,甚至是 C 标准库。我目前有一个存储 32 位 GUID 1的数据结构,如下所示:

我有另一个将 GUID 与实际数据相关联的结构,但就本文而言,它并不是那么重要:

我的内核有望支持各种类型的 GUID,每种类型的 GUID 最多具有唯一实例(这已经足够了,对吗?)。我减去一个是因为我想成为字段和字段的非法值。我的问题是我不知道如何开发一种算法来唯一地填充内核创建的每个字段。我能想到的唯一算法是随机选择一个 id,然后查看该 id 是否用于我要创建的特定 GUID 类。但是,我必须对所有为该特定类型创建的 GUID 进行排序,以查看它是否被占用,如果是,则重新执行整个操作。我也想过有一个数组210 - 1 = 1023222 - 1 = 41943030.type.id.idGUIDu32每种使用的 GUID 类型都有一个(我确定我不会有 1023 种类型),并且每次我想要一个 GUID 时只增加适当的数字,但是当我创建 4194303 个特定的 GUID 时会发生什么类型?

只给用户一个指向实际数据的指针会更好吗,因为这保证是唯一的,并typedef void* GUID用来让 API 用户知道我不希望他们弄乱我的数据?还是我需要 GUID 提供的抽象?

1)这与GUID 标准无关。我独立想出了这个名字,当我发现实际上有一个叫做 GUID 的东西时,我试着想出一个新名字,但还没有成功。

0 投票
2 回答
298 浏览

math - 为大型系统生成唯一编号

我们大多数人都看到,当我们从类似亚马逊的网站上进行购买时,我们会得到一个订单号或购买号(10-12 位数字),它看起来像一些随机数。同样,我想为大型系统生成唯一 ID。生成它的最佳算法是什么?

一些我认为效率不高或不适用于大规模系统的方法