关闭

hibernate配置oracle生成序列结果为负数

标签: hibernateoracle
781人阅读 评论(1) 收藏 举报
分类:

工作中使用到了oracle12的版本,使用hibernate5保存时发现生成的结果除了1正常其余的都从-49开始往上加,

数据库自身查询是没有问题的。

跟踪hibernate5的源码发现@SequenceGenerator还需要配置一个allocationSize=1才能正常

@SequenceGenerator(name="UMS_USER_SEQ", sequenceName="UMS_USER_SEQ",allocationSize = 1)

相关源码在org.hibernate.id.enhanced.PooledOptimizer#generate

generationState.value = callback.getNextValue();
			// unfortunately not really safe to normalize this
			// to 1 as an initial value like we do the others
			// because we would not be able to control this if
			// we are using a sequence...
			if ( generationState.value.lt( 1 ) ) {
				log.pooledOptimizerReportedInitialValue( generationState.value );
			}
			// the call to obtain next-value just gave us the initialValue
			if ( ( initialValue == -1
					&& generationState.value.lt( incrementSize ) )
					|| generationState.value.eq( initialValue ) ) {
				generationState.hiValue = callback.getNextValue();
			}
			else {
				generationState.hiValue = generationState.value;
				generationState.value = generationState.hiValue.copy().subtract( incrementSize - 1 );
			}


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13375次
    • 积分:263
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:5篇
    • 译文:0篇
    • 评论:4条
    最新评论