使用专门的表作为OID的生成器

 1  @Entity
 2  @Table(name  =   " ABC_CONFIGURE_DTL " )
 3  public   class  AbcConfigureDtl  implements  Serializable {
 4 
 5       //    configure_dtl_id     number                          not null,
 6       /**
 7       * 主键
 8        */
 9      @Id
10      @GeneratedValue(strategy  =  GenerationType.TABLE, generator  =   " ABC_CONFIGURE_DTL_CONFIGURE_DTL_ID " )
11      @TableGenerator(name  =   " ABC_CONFIGURE_DTL_CONFIGURE_DTL_ID " ,table  =   " TB_GENERATOR " ,pkColumnName  =   " GEN_NAME " ,
12       valueColumnName  =   " GEN_VALUE " ,pkColumnValue  =   " ABC_CONFIGURE_DTL_CONFIGURE_DTL_ID " ,allocationSize  = 1 )
13       private   long  configure_dtl_id;
14 
15       //    configure_id         number,
16 
17  .....
18  }

OID生成器对应的数据库表

 使用专门的表作为OID的生成器

 

说明:

  类定义文件中的注解是JPA注解,可以参考http://www.cnblogs.com/kentyshang/archive/2008/01/07/1029142.html

使用注解的方式,可以大大减少我们定义映射配置文件的复杂程度。

下面简单说下注解的大概意思:

@Entity 指定了当前类是待映射类

@Table 指定了映射类对应的数据库表

@Id  指定了OID

@GeneratedValue中,strategy指定采用数据库表的形式生成OID,generator指定生成器的名称。

@TableGenerator 定义了一个表形式的OID生成器,name是名称(:@GeneratedValue中的generator就是引用这个名字,两者创建了关联),其他的部分是表的定义。

  一个TableGenerator 可以提供N个待映射对象的OID,甚至可以整个系统使用一个TableGenerator 统一作为OID的生成器。

  表中的GEN_VALUE就是生成出来的OID。

你可能感兴趣的:(生成)