hibernate基于注解的主键设置

基于注解的hibernate主键设置:@Id.
那么它的生成规则是什么呢?是由@GeneratedValue来规定的。

我们先来看看它是如何定义的:

Java代码 复制代码
  1. @Target({METHOD,FIELD})   
  2.     @Retention(RUNTIME)   
  3.     public @interface GeneratedValue{   
  4.         GenerationType strategy() default AUTO;   
  5.         String generator() default "";   
  6.     }  
@Target({METHOD,FIELD})
	@Retention(RUNTIME)
	public @interface GeneratedValue{
		GenerationType strategy() default AUTO;
		String generator() default "";
	}



        

Java代码 复制代码
  1. public enum GenerationType{   
  2.         TABLE,   
  3.         SEQUENCE,   
  4.         IDENTITY,   
  5.         AUTO   
  6.     }  
public enum GenerationType{
		TABLE,
		SEQUENCE,
		IDENTITY,
		AUTO
	}


现在我们看到了,它提供了4种生成策略:
TABLE:使用一个特定的数据库表格来保存标识符序列。
SEQUENCE:生成序列化标识符。
IDENTITY:标识符有数据库自动生成(主要是自动增长型)
AUTO:标识符生成工作由hibernate自动处理。实际项目开发不建议使用。
注意:当主键为int,而数据库中又不是自动增长型时,使用@GeneratedValue是无法正常工作的。

我们也可以使用下面的方式来自己指定我们的主键值:
          

Java代码 复制代码
  1. @GeneratedValue(generator = "c-assigned")   
  2.     @GenericGenerator(name = "c-assigned", strategy = "assigned")   
  3.      private String employeeId;  
@GeneratedValue(generator = "c-assigned")
	@GenericGenerator(name = "c-assigned", strategy = "assigned")
     private String employeeId;


或者直接不要定义@GeneratedValue,只定义@Id效果也是一样的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值