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各种主键生成策略与配置详解

最新文章

  1. Windows bat脚本学习(1)
  2. 前端AJAX传递数组给Springmvc接收处理
  3. 【wikioi】1922 骑士共存问题(网络流/二分图匹配)
  4. 【技术贴】webservice cxf2 客户端动态调用报错No operation was found with the name
  5. 冒烟测试、α测试、Beta测试、性能测试
  6. APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4
  7. iOS_block内存分析
  8. xamarin跨平台iOS、Android 与Windows
  9. SQL Server 复制 - 发布订阅(SQL Server 数据同步)
  10. 深入浅出WPF——附加事件(Attached Event)
  11. Openresty 数据共享API.Data Sharing within an Nginx Worker
  12. Java EE 开发环境搭建
  13. 疯狂java讲义 第八章课后题
  14. LayaAir疑难杂症之三:1.7版本click()、execCommand(&#39;copy&#39;)函数不生效
  15. java 大文件分割与组装
  16. kuangbin fire搜索bfs
  17. MySql常用命令集Mysql常用命令5
  18. adb shell dumpsys 命令
  19. scrapy 项目通过scrapyd部署
  20. docker之数据卷管理

热门文章

  1. [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  2. 数据库及SQL----常用知识点总结
  3. Oracle 与Mysql区别
  4. CentOS7下搭建hadoop2.7.3完全分布式
  5. 九天学会Java,第一天,变量和数据类型,赋值和输出
  6. Openfire分析之二:主干程序分析
  7. STL中队列(queue)的使用方法
  8. MIPI DSI转LVDS芯片方案TC358775XBG
  9. 百行go代码构建p2p聊天室
  10. spring 整合Mybatis 错误:Parameter &#39;items_id&#39; not found. Available parameters are [array]