Sequence的start with 值如何确定才能保证生成的主键不会冲突???

我的项目中最开始数据库表主键的生成策略是 increment,但由于后来采用了集群部署的方式,出现了主键冲突的问题. 故改为使用 Sequence生成.

<id name="id" column="id">
    <generator class="increment" />
</id>
<generator class="sequence">
    <param name="sequence">SEQ_RECEIPT_HIBERNATE</param>
</generator>

统计数据库中,指定序列被哪些表的主键使用,故将全部最大值加起来作为序列的开始值+1,可以保证绝对不会冲突.

有些表中无数据,因此上要作判空处理.

1. 一个序列只被一个表使用时

-- MANTIS_CARD_LOG : OID
-- #### SEQ_RECEIPT_CARD_LOG ######---
--
 else max(l1.OID)   end) SEQ_RECEIPT_CARD_LOG_MAX  from MANTIS_CARD_LOG l1
--
create sequence SEQ_RECEIPT_CARD_LOG
minvalue
maxvalue
start
increment
nocache;

2. 一个序列被多个表使用时

--MANTIS_CARD_INFO:OID
--MANTIS_CARD_REP_INFO:OID
-- #### SEQ_RECEIPT_CARD ######---
--
  select (c1c1.c1Max + c2c2.c2Max  ) SEQ_RECEIPT_CARD_MAX
  from
    ( else max(c1.OID)   end) c1Max  from MANTIS_CARD_INFO          c1) c1c1,
    ( else max(c2.OID)   end) c2Max  from MANTIS_CARD_REP_INFO      c2) c2c2
--
create sequence SEQ_RECEIPT_CARD
minvalue
maxvalue
start
increment
nocache; 

Hibernate主键生成策略参考文章:

Hibernate各种主键生成策略与配置详解

Oracle_Sequence如何初始化开始值的更多相关文章

  1. select2初始化默认值

    之前用select2初始化默认值使用了select2('val','1'),这样做没问题,但只能用在单选上,多选的话,即使将val后面的值改成数组['0', '2']这种形式也没用. <scri ...

  2. easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

    easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...

  3. select2多选框初始化默认值和获得值

    select2多选自带手动输入搜索功能,可怜我还查寻半天api 获得值: //chang函数获取选择的option $(".js-example").change(function ...

  4. (原创)关于FFmpeg的一些有关的初始化默认值的问题

    最近手头上要做一个媒体格式分析库,能解析文件,流的视频格式,编码格式等一些重要的视频参数能进行尽量多的提取.当我们做媒体相关方面的东西,自然而然就会想到FFmpeg这个强大的开源媒体库,所以我们肯定会 ...

  5. SpringXML方式给bean初始化属性值

    可以在Spring容器初始化bean的时候给bean的属性赋初始值,直接在property标签里设置即可 1 2 3 4 5 6 <bean name="user**" cl ...

  6. 对sql初始化的值的处理

    要把数据库的值置为数据库初始化时候的值(带隐式的null值)的sql语句. UPDATE member_base_info SET orderType =NULL,getaimAddress=NULL ...

  7. distpicker省市区插件初始化选中值的问题

    $('#distpicker1').distpicker('destroy')  //当需要重新生成的时候,需要先销毁 $('#distpicker1').distpicker({ province: ...

  8. vue 异步请求数据后,用v-if,显示组件,这样初始化的值就在开始的时候传进去了

    请求到数据才会有的一个组件,并把数据传进组件中 https://www.cnblogs.com/LuckyWinty/p/6246698.html

  9. 零值初始化&字符串常数作为函数模板参数

    1.在定义一个局部变量时,并希望该局部变量的初始化一个值,可以显示调用其默认构造函数,使其值为0(bool类型默认值为false). template <typename T> void ...

随机推荐

  1. canvas图形处理和进阶用法

    前面的话 上一篇博客介绍了canvas基础用法,本文将更进一步,介绍canvas的图形处理和进阶用法 图形变换 图形变换是指用数学方法调整所绘形状的物理属性,其实质是坐标变形.所有的变换都依赖于后台的 ...

  2. 从"汉诺塔"经典递归到JS递归函数

    前言 参考<JavaScript语言精粹> 递归是一种强大的编程技术,他把一个问题分解为一组相似的子问题,每一问题都用一个寻常解去解决.递归函数就是会直接或者间接调用自身的一种函数,一般来 ...

  3. Andrew Ng机器学习课程笔记--week4(神经网络)

    Neural Networks: Representation 一. 内容概要 Neural Network Model Representation 1 Model Representation 2 ...

  4. C# 逆变与协变

    该文章中使用了较多的 委托delegate和Lambda表达式,如果你并不熟悉这些,请查看我的文章<委托与匿名委托>.<匿名委托与Lambda表达式>以便帮你建立完整的知识体系 ...

  5. random模块函数分析(一)

    random是python产生伪随机数的模块,随机种子默认为系统时钟.下面分析模块中的方法: 1.random.randint(start,stop): 这是一个产生整数随机数的函数,参数start代 ...

  6. spring配置和注解事务同时存在导致的事务嵌套

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt123 首先先看配置文件: [html] view plaincopy < ...

  7. 编译make的出错提示解决方案

    编译出错笔记:start.s:20: Error: no such instruction: `ldr r0,=WTCON' 错误:没有这样的指令 解决:编译文件后缀名必须为大写S,改为start.S ...

  8. 建立maven工程pom.xml报错:web.xml is missing and <failOnMissingWebXml> is set to true

    解决方式:如图添加web.xml文件即可

  9. jenkins+gitlab+sonar+testng构建持续集成测试环境(配置干货篇)

    几个工具的安装部分就不在此介绍了! jenkins配置: 1.插件安装 2.root私钥配置 3.构建job配置 4.部署job配置 5.测试job配置 7.jenkins全局工具配置 8.jenki ...

  10. a链接易混淆与form表单简易验证用法详解

    链接可以说遍布互联网,比如你想提供一个可以跳转到百度首页的链接给网友,那么代码如下: <a href="http://www.baidu.com">百度一下,你就知道& ...