Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Hibernate Hi-Lo算法策略将序列乘以50?_Hibernate - Fatal编程技术网

为什么Hibernate Hi-Lo算法策略将序列乘以50?

为什么Hibernate Hi-Lo算法策略将序列乘以50?,hibernate,Hibernate,我正在使用Hibernate 5.3.7。将hibernate.id.new_generator_映射设置为默认值从true到false后,唯一约束错误得到解决 但面对不同的id创建行为: Hibernate生成的Id=(Oracle序列的50*(start_with)值)+1 这是Hilo算法的默认行为吗 提前谢谢 建议的方法- Hi-Lo: 我可以读出hi和lo值的计算结果 [(hi-1)*incrementSize)+1,(hi*incrementSize)) 默认情况下,增量大小为50

我正在使用Hibernate 5.3.7。将
hibernate.id.new_generator_映射设置为默认值从true到false后,唯一约束错误得到解决

但面对不同的id创建行为:

Hibernate生成的Id=(Oracle序列的50*(start_with)值)+1

这是Hilo算法的默认行为吗

提前谢谢

建议的方法-

Hi-Lo:

我可以读出hi和lo值的计算结果 [(hi-1)*incrementSize)+1,(hi*incrementSize)) 默认情况下,增量大小为50

将起始值乘以50的原因是什么

例如:

我有一个序列起始值为5000的表

然后我的Hibernate应用程序将从(5000*50)=250000开始

池策略-在唯一约束异常中结束

还有:Oracle序列如何在使用过的ID上进行通信

根据本网站,id中的空白是正常的:

解决方案:

@Id
@GeneratedValue(策略=GenerationType.SEQUENCE,生成器=序列)
@SequenceGenerator(名称=序列,序列名称=序列)
私人长titId;

得到如下警告:

发现使用了不推荐的[org.hibernate.id.SequenceHilGenerator]基于序列的id生成器;请改用org.hibernate.id.enhanced.SequenceStyleGenerator。有关详细信息,请参阅《hibernate域模型映射指南》

然后将我的代码更改为SequenceStyleGenerator:

@Id
@GenericGenerator(name=“cmrSeq”,strategy=“org.hibernate.id.enhanced.SequenceStyleGenerator”,
参数={
@参数(name=“sequence\u name”,value=“sequence”)}
)
@GeneratedValue(生成器=“序列名称”)
私人长titId;

这解决了我的两个问题:

1) 不推荐使用的警告已修复2)现在,id是按照oracle序列生成的