详解@GeneratedValue @SequenceGenerator @GenericGenerator 请高手详解 @GeneratedValue(strategy=TABLE, generator=”CUST_GEN”) @SequenceGenerator(name=”EMP_SEQ”, allocationSize=25) @GenericGenerator 例子: @Entity @Table(name = “`FAVORITES`”) @SequenceGenerator(name = “SEQ_FAVORITE”, sequenceName = “SEQ_FAVORITE”) @GenericGenerator(name = “idStrategy”, strategy = “native”, parameters = { @Parameter(name = “sequence”, value = “SEQ_FAVORITE”) }) public class Favorite @Id @GeneratedValue(generator=”idStrategy”) @Column(name=”`ID`”) protected int id = 0; Hibernate . 2011年6月07日 16:43 0 首先这个注解是jpa中的主键生成策略的注解,并且主要用在oracle中, 1.首先需要在实体类前面申明一个Sequence如下: 方法:@SequenceGenerator(name=”SEQ_Name”,sequenceName=”SEQ_DB_Name”) 参数注意:SEQ_Name:表示为申明的这个Sequence指定一个名称,以便使用 SEQ_DB_Name:表示为数据库中的Sequence指定一个名称。两个参数的名称可以一样。 Java代码 1.@Entity 2.@SequenceGenerator(name=”teacherSEQ”,sequenceName=”teacherSEQ_DB”) 3.public class Teacher { 4.…… 5.} @Entity @SequenceGenerator(name=”teacherSEQ”,sequenceName=”teacherSEQ_DB”) public class Teacher { …… } 2.然后使用@GeneratedValue注解 方法:@GeneratedValue(strategy=GenerationType.SEQUENCE,generator=”SEQ_Name”) 参数:strategy:固定为GenerationType.SEQUENCE Generator:在实体类前面申明的sequnce的名称 Java代码 1.@Entity 2.@SequenceGenerator(name=”teacherSEQ”,sequenceName=”teacherSEQ_DB”) 3.public class Teacher { 4. private int id; 5. 6. @Id 7. @GeneratedValue(strategy=GenerationType.SEQUENCE,generator=”teacherSEQ”) 8. public int getId() { 9. return id; 10.}}