使用专门的表作为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 }
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生成器对应的数据库表
说明:
类定义文件中的注解是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。