JPA注解

Posted 筱小Q

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA注解相关的知识,希望对你有一定的参考价值。

@GeneratedValue

为一个实体生成一个唯一标识的主键,JPA要求每一个实体Entity,必须有且只有一个主键,他提供了主键的生成策略。

@GeneratedValue注解有两个属性:strategy和generator

其中strategy用于标注主键的生成策略,默认情况下,JPA会自动选择一个适合底层数据库的主键生成策略;

generator属性的值是一个字符串,默认为"",声明了主键生成器的名称(对应于同名的主键生成器@SequenceGenerator和@TableGenerator)。

在javax.persistence.GenerationType中定义了以下几种可供选择的策略: 
–IDENTITY:采用数据库ID自增长的方式来自增主键字段,Oracle 不支持这种方式; 
–AUTO: JPA自动选择合适的策略,是默认选项; 
–SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,mysql不支持这种方式 
–TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

可以在属性上面或者getter上面进行注解 ;注意: 不能一部分注解在属性上,一部分注解在getter上,否则会抛出异常

 @GenericGenerator

自定义主键生成策略

就可以用hibernate特有以下用法来实现 ,Java代码  

@GeneratedValue(generator = "paymentableGenerator")    

@GenericGenerator(name = "paymentableGenerator", strategy = "assigned")  

@GenericGenerator的定义: (Java代码

@Target({PACKAGE, TYPE, METHOD, FIELD})  
@Retention(RUNTIME)  
public @interface GenericGenerator {  
 /** 
  * unique generator name 
  */  
 String name();  
 /** 
  * Generator strategy either a predefined Hibernate 
  * strategy or a fully qualified class name. 
  */  
 String strategy();  
 /** 
  * Optional generator parameters 
 * parameters得到strategy指定的具体生成器所用到的参数 */ Parameter[] parameters() default {}; }

  详细介绍参考:http://blog.csdn.net/linan0930/article/details/21108411

 

以上是关于JPA注解的主要内容,如果未能解决你的问题,请参考以下文章

JPA注解“@GeneratedValue”详解

JPA注解实现联合主键

使用JPA中@Query 注解实现update 操作

Spring JPA Query注解——输入一个sql文件

什么是jpa注解,为什么要用注解,注解的意义是什么?

hibernate注解与jpa注解