问题标签 [sequence-generators]
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 - JPA @SequenceGenerator 注释如何工作
我正在学习 JPA 并且对@SequenceGenerator
注释感到困惑。
据我了解,它会自动为实体的数字身份字段/属性分配一个值。
Q1。这个序列生成器是利用数据库不断增加的数值生成能力还是自己生成数字?
Q2。如果 JPA 使用数据库自动增量功能,那么它是否适用于没有自动增量功能的数据存储?
Q3。如果 JPA 自己生成数值,那么 JPA 实现如何知道接下来要生成哪个值?它是否首先咨询数据库以查看最后存储的值以生成值(last + 1)?
Q4。还请阐明注释的属性sequenceName
和allocationSize
属性。@SequenceGenerator
java - HSQLDB 和 SequenceGenerator 的问题
我有一个具有 ID 字段的实体:
该类还定义了序列生成器:
并且 Oracle 模式具有必要的序列。一切正常。
我们也有测试,它使用内存中的 HSQLDB。在运行测试之前,所有的表都是基于 Hibernate 实体类创建的。
但是,并未创建此特定类的表。并弹出错误,因为 ID 是一个字符串,而 HSQLDB 中的 SequenceGenerator 返回一个 INT / LONG / Numeric 值。
应用程序正在使用旧版 Oracle 数据库,并且 ID_VOIE 列必须保留为 String / Varchar。
有什么解决办法吗?
java - 使用 @MappedSuperclass 注释的类上的 @SequenceGenerator
我的实体具有以下结构:
我得到了以下异常:
当我在 Intermed 类上将 @MappedSuperclass 更改为 @Entity 时,一切正常。使用@MappedSuperclass 和@SequenceGenerator 有什么问题吗?或者我错过了什么?
oracle - oracle 存储过程通过休眠比单独生成更大的数字
entry_id_seq
我们有一个存储过程,它为条目 id ( )生成数字。通过以下设置,代码生成的数字比直接用 SQL 调用的数字要大。
例如,以下代码为 id 生成一个数字“11195215652”。但是如果我运行select entry_id_seq.NEXTVAL nv from dual
,它会返回小得多的“32350910”。
我尝试了下面的建议
但它给了我以下错误:
hibernate - 使用@SequenceGenerator 创建序列
我想知道是否有一种方法可以定义序列生成器 java 端。通常我们在数据库中定义了序列生成器,我们使用它们将它们映射到实体
@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID")。但是有什么方法可以让休眠本身生成值而不是使用数据库中的序列生成器?
谢谢!
oracle - Hibernate SequenceGenerator 返回不正确的 nextval
这是我关于休眠的第二篇文章。自从我开始使用 hibernate 以来,它带来的问题比它解决的问题还多。这几乎让我觉得我应该坚持使用普通的旧 JDBC。反正,
这是我试图解决的问题之一。
我在 .hbm 文件中的序列生成器如下所示。
请注意:初始值为 17599。这是因为 oracle 序列中的 LAST_NUMBER 为:17599
当我运行代码时,我看到在 Hibernate Debug 语句中生成的下一个序列为 200、201。
我预计 nextval 应该是 17600。似乎 oracle 序列根本没有被使用。
我的配置有什么问题以及如何修复它。任何帮助是极大的赞赏。
谢谢
jpa - 从 SequenceGenerator 获取下一个值
我想利用 SequenceGenerator 并从序列生成器中获取下一个值。我想避免去数据库,并依靠序列生成器给我一个独特的价值。此外,我正在使用该值在显示字段中显示唯一 ID,而不保留对象。
java - 高效的可扩展序列生成器实现
问题:
我需要实现多个共享序列生成器,它们将被 50-100 个 Tomcat 服务器使用。每个序列生成器应从 1 开始,并在每次请求后递增 1。序列生成器实现应该有原子增量命令。Java 客户端应该可用。
规模:
多达 50000 个积极使用的序列生成器,对于每个生成器,我们预计在 5-10 秒内有一个增量请求。每秒最多 20000 个请求
50-100 个 Java 客户端(Tomcat 服务器)。对序列生成器的访问在这些服务器之间共享。重要提示:只有 2 个客户端使用相同的序列生成器。
50-100 次 - 每个序列生成器的平均使用次数。
24 h TTL - 一个生成器最多应在创建后 24 小时后被清理 - 因此实际上可能有超过 50000 个序列生成器,但预计最多只有 50000 个会同时主动接收请求。
性能:
<1ms 优选平均响应时间。平均超过 2ms 绝对不够好。
我们排除了 Oracle 的 Sequence 对象。
我们目前正在考虑 Redis 和 Memcached。
两者都很快。
推荐/足够好的实现是什么?
为此目的还有其他更好的技术吗?
另一个重要的问题:
incr、Redis 或 Memcached 哪个性能更好?
谢谢
java - 用于字符序列生成器的 Java 库
我需要生成递增的字符序列,其中每个字符可以是不同的字母或数字范围。有谁知道有这样一个任务的图书馆?例如:
其中 A 是任意字母 AZ,0 是任意数字 0-9。我也需要增加它们,例如:
如果你继续前进,它会像这样延续:
直到达到:
hibernate - @SequenceGenerator 和 allocationSize 强制重置
我们使用@SequenceGenerator 映射我们的实体,并将allocationSize 设置为100。Hibernate 适当地生成主键。
我们现在有一个后台作业,必须将一组新记录插入表中。此过程完成后,我们希望强制 Hibernate 重置其分配块并再次从序列中读取下一组 ID。
否则,hibernate 将生成下一组 ID(基于分配池中剩余的 ID),这些 ID 可能与进程输入的新记录重叠。
有没有办法清除分配池并强制休眠重新加载序列nextval?系统范围的设置也可以(即强制重新加载所有序列)