@Idannotation继承自javax.persistence.Id,表示下面的成员字段是当前实体的主键。因此,你的Hibernate和spring框架以及你可以做一些反射基于这个注释的作品。
@GeneratedValue注释是配置指定列(字段)增量的方式。例如,当使用Mysql时,您可以在表的定义中指定auto_increment以使其自增量,然后使用
1.在数据库中定义序列
例如,Oracle必须使用序列作为增量方法,假设我们在Oracle中创建一个序列:
create sequence oracle_seq;
2.参考数据库序列
现在我们在数据库中有序列,但是我们需要建立Java和DB之间的关系,通过使用@SequenceGenerator:
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
sequenceName是Oracle中序列的真实名称,name是您要在Java中调用它的名称。如果它不同于name,你需要指定sequenceName,否则只需使用name。我通常忽略sequenceName来节省我的时间。
3.在Java中使用序列
最后,是时候在Java中使用这个序列。只需添加@GeneratedValue:
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
生成器字段指的是要使用的序列生成器。请注意,它不是DB中的实际序列名称,而是您在SequenceGenerator的name字段中指定的名称。
4.完成 所以完整的版本应该是这样的: public class MyTable{ @Id @SequenceGenerator(name="seq",sequenceName="oracle_seq") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq") private Integer pid;
}