public class Teacher
{
private int id;
private String title;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId()
{
return id;
}
}我使用的是mysql对应的数据库表如下:public class Teacher
{
private int id;
private String title;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="mySeqGenerator")
@SequenceGenerator(name = "mySeqGenerator", sequenceName = "t_teacher_sequence", initialValue = 1000, allocationSize = 50)
public int getId()
{
return id;
}
}这里需要配合使用@SequenceGenerator,用来指定序列的相关信息。public class Teacher
{
private int id;
private String title;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId()
{
return id;
}
}使用比较简单,这里不需要做详细介绍了public class Teacher
{
private int id;
private String title;
@Id
@GeneratedValue(strategy = GenerationType.TABLE,generator="myTableGenerator")
@TableGenerator(name = "myTableGenerator", table = "hibernateNeedTable",
pkColumnName = "pk_key", valueColumnName = "pk_value", pkColumnValue = "teacherId",
initialValue = 100, allocationSize = 1000)
public int getId()
{
return id;
}
}不知道怎么用合适的语言来描述这些属性的含义。直接上图和执行的sql语句,读者只需要简单理解下,就能明白这些属性的含义了。Hibernate:
select
pk_value
from
hibernateNeedTable
where
pk_key = ‘teacherId‘ for update
Hibernate:
update
hibernateNeedTable
set
pk_value = ?
where
pk_value = ?
and pk_key = ‘teacherId‘
Hibernate:
insert
into
Teacher
(title, id)
values
(?, ?)看到这里,大家应该明白了这些属性的用法了。值得一提的是,这个表可以给无数的表作为主键表,只是添加一条记录而以(需要保证table、pkColumnName、valueColumnName三个属性值唯一就可以了。使用注解风格学习Hibernate和JPA的主键生成策略,布布扣,bubuko.com
原文:http://blog.csdn.net/aitangyong/article/details/24117745