在Hibernate中使用oracle的sequence产生主键

在Hibernate中使用oracle的sequence产生主键

      刚刚接触Hibernate不长时间,今天想动手做一个小例子,数据库使用的是Oracle。打算使用Oracle中的序列作为表的主键,却不知道使用Hibernate如何与其关联在一起。请教同事,被告知要使用诸如select语句进行查询“ select   sequence.nextval   from   dual ”,晕倒~

终于等到中午,上网去查资料。得解:
   1
、在oracle 首先创建sequence

       create  sequence seq_id
      minvalue 
1
      start 
with   1
      increment 
by   1
      cache 
20 ;

   2.在你的hbm.xml中的配置

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

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

       hibernate:  select  seq_id.nextval  from  dual 

       hibernate:  
insert   into  YXJK.T_YXJK_WHRYTXL (XM0000, ZW0000,                         LXDH00,SJHM00,DZYJ00,IP0000,ID0000)  values  (?, ?, ?, ?, ?, ?, ?)

   自动生成下一个序列值,然后将对象插入表中。
       这样问题得解!

PS:
sequence就是采用数据库提供的sequence机制生成主键。如oralce中的Sequence
native
就是由hibernate根据数据库的Dialect,自动采用identityhilosequence的其中一种作为主键生成方式

你可能感兴趣的:(在Hibernate中使用oracle的sequence产生主键)