ejb3 之 主键 生成 之 Sequence
来源:互联网 发布:数据结构算法与应用pdf 编辑:程序博客网 时间:2024/04/28 11:51
在一些特殊的数据库中,比如Oracle中可以使用Sequence来生成自动主键。若要在Entity中使用Sequence作为主键的生成策略,则步骤如下所示。
(1)在数据库中创建一个Sequence,SQL脚本如下。
CREATE SEQUENCE customer_sequence START WITH 1 INCREMENT BY 10;
这个Sequence从1开始,每次增长10。
提示:本书采用的MySQL数据库中不支持Sequence,所以此策略不适用于MySQL。
(2)在Entity标记主键的位置,指定主键生成策略为“GenerationType. SEQUENCE”,具体设置如下。
@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
private Integer id;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
}
(3)指定生成主键策略的名称,例如这里命名为“customer_seq”。
@Id
@GeneratedValue(strategy = GenerationType. SEQUENCE,generator="customer_seq")
public Integer getId() {
return this.id;
}
(4)使用@ SequenceGenerator标记定义Seqence生成策略的具体设置,代码如下所示。
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="customer_seq")
@SequenceGenerator(name="customer_seq",
sequenceName="customer_sequence"
)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
注释@SequenceGenerator用于设置主键使用Sequence生成主键的策略,它的定义如下所示。
@Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
public @interface SequenceGenerator {
String name();
String sequenceName() default "";
int initialValue() default 0;
int allocationSize() default 50;
}
在使用此@ SequenceGenerator标记时,需要注意以下几个问题。
l 与@ TableGenerator标记类似,@ SequenceGenerator也可以标注在类、属性和方法前,并且作用域是整个persist unit的范围。
l name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中。
l sequenceName属性值表示数据库中创建的Sequence的名称。
l initialValue表示主键初识值,默认为0。
l allocationSize表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50。
转 : http://blog.csdn.net/ejb_jpa/article/details/2422454
- ejb3 之 主键 生成 之 Sequence
- Hibernate-主键映射之主键生成策略
- Hibernate之主键生成策略
- Hibernate之主键生成方式
- hibernate框架之主键生成
- Hibernate之主键生成策略
- Hibernate之主键生成策略
- hibernate框架之主键生成
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之十二: hibernate利用PostgreSQL自带的SEQUENCE生成主键
- Hibernate 中关于主键生成策略之联合主键
- IT忍者神龟之Hibernate联合主键下,主键生成策略
- Hibernate主键生成策略之Hilo
- hibernate annotation之主键生成策略
- Hibernate之ID主键生成策略
- hibernate annotation 之 主键生成策略
- hibernate annotation 之 主键生成策略
- Hibernate进阶之ID主键生成策略
- hibernate annotation 之 主键生成策略
- USACO Section 3.2 Feed Ratios - 三层for循环就ok了!
- 什么是金融危机,表现在哪些地方
- android源码定制之--入门篇--android源码定制要点
- 如何做好博客营销
- 嵌入式程序员面试问题集锦
- ejb3 之 主键 生成 之 Sequence
- 负面环境
- 内核中用于数据接收的结构体struct msghdr
- Android 创世纪 第二天
- *《精通Windows API》 5.4.2 分配和释放可读可写的虚拟内存页面
- 响应式网页设计
- Siteminder Learning Roadmap
- Android SurfaceView 学习笔记(二)
- NDk编译google protobuf 出现dynamic_cast not permitted with -fno-rtti