知识大全 浅谈在Hibernate中使用Oraclesequence

Posted 数据库

篇首语:学向勤中得,萤窗万卷书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈在Hibernate中使用Oraclesequence相关的知识,希望对你有一定的参考价值。

浅谈在Hibernate中使用Oraclesequence  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 为表创建自增长自段有两种 一种是不同的表使用各自的Sequence 方法如下

   在Oracle sequence首先创建sequence

  

  create sequence seq_idminvalue start with increment by cache ;

   在你的hbm xml中的配置

  

  <id column= ID name= id type= integer ><generator class= sequence ><param name= sequence >seq_id</param></generator></id>

  这样再插入数据的时候 Hibernate会自动生成如下语句

  

  hibernate: select seq_id nextval from dualhibernate: insert into YXJK T_YXJK_WHRYTXL (XM ZW LXDH SJHM DZYJ    IP      ID ) values (? ? ? ? ? ? ?)

  自动生成下一个序列值 然后将对象插入表中 在使用的时候需要注意 Hibernate对于sequence的主键的要求是一定要是shor long 或者integer

  二 还有一种方式是使用公共的sequence

  这各时候可以不指定表使用的sequence 那么相应的hbm xml中内容是

  

  <id column= ID name= id type= integer ><generator class= native >    </generator></id>

  然后创建公用的 sequence对象 命名为 hibernate_sequence

  

  create sequence hibernate_sequenceminvalue maxvalue start with increment by ;

  三 注意事项

  如果数据库是从sqlserver等其他数据库移植而来的 那么创建sequence时的起始值应该比当前表中最大的ID值大 否则会出现错误 因为sequence 不会维护是否和导库前现有的值重复

   sequence 用于Oracle数据库

  

  <id name= id column= id ><generator class= sequence ><param name= sequence >序列名</param></generator></id>

   native 跨数据库时使用 由底层方言产生

  Default sequence为hibernate_sequence<id name= id column= id ><generator class= native /></id>

cha138/Article/program/Oracle/201311/17252

相关参考