JPA规范中主键生成策略@GeneratedValue
四种用法:TABLE,SEQUENCE,IDENTITY,AUTO
。
Spring Boot集成 JPA,在实体类映射表主键列的属性上使用@GeneratedValue注解来指示主键生成策略,主键生成策略的类型由枚举类GenerationType
的值确定。
@GeneratedValue
实体类上主键生成策略注解@GeneratedValue
。
package javax.persistence;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import static javax.persistence.GenerationType.AUTO;
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface GeneratedValue {
//没有显式指定主键策略,默认使用 AUTO,JPA自动选择合适的策略
GenerationType strategy() default AUTO;
String generator() default "";
}
GenerationType
主键生成类型源码.
package javax.persistence;
public enum GenerationType {
//使用一个特定的数据库表格来保存主键,在使用时从该表取数据做为主键(在分布式系统需要全局唯一有序的主键时常使用)。
TABLE,
//由底层数据库的序列来生成主键,条件是数据库支持序列。
SEQUENCE,
//由数据库自动生成主键,主要在自增ID列使用
IDENTITY,
//主键由程序控制,在代码层必须给映射主键的字段set值
AUTO
}
数据库支持类型
- MySQL:支持TABLE,IDENTITY,AUTO;不支持SEQUENCE。
- Oracle:支持TABLE,SEQUENCE,AUTO;不支持IDENTITY。
参考资料
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载