概述
一:使用默认的自增主键
主键自增有好几种策略:identity是MySql对应的自增、sequence对应oracle的自增序列,
native是根据所连接的数据库自动选择上诉两个或hilo策略
在 @Id 后边加上 @GeneratedValue,就相当于调用了native策略
(可以指定@GeneratedVlaue(strategy=GenerationType.IDENTITY)或者.SEQUENCE)
//setter&getter
@Id
@Column(name="id")
@GeneratedValue //相当于native
public int getTeacherid() {
return teacherid;
}
执行时输出:DEBUG SchemaUpdate:226 - create sequence hibernate_sequence
证明Hibernate已经帮我创建了一个默认的序列
这样做有一个缺点,就是所有表都公用这一个sequence,要靠后边的方法解决
二:使用私有sequence
实体下边写
@Entity
@SequenceGenerator(name="SeqGen1",sequenceName="teacher_sequence")//name是这个序列生成器的代号,sequenceName是要存入数据库的序列的名字
............
@Id
@GeneratedValue(generator="SeqGen1")//写明使用哪个序列生成器
@Entity
@Table(name="t_Teacher")
@SequenceGenerator(name="SeqGen1",sequenceName="teacher_sequence")//name是这个序列生成器的代号,sequenceName是要存入数据库的序列的名字
public class Teacher {
private int teacherid;
private String name;
private int age;
private Date birthday;
private String secret;
private Grade grade;
//setter&getter
@Id
@Column(name="id")
@GeneratedValue(generator="SeqGen1")//写明使用哪个序列生成器
public int getTeacherid() {
return teacherid;
}
这样就能每个表格都用自己指定的sequence了:Hibernate:
select
teacher_sequence.nextval
from
dual
三:Table_Generator
用一张表给所有表的主键创建序列,跨数据库平台以后数据也不受影响
这个少用又复杂,用的时候再去查吧
@javax.persistence.TableGenerator(
)
最后
以上就是落后龙猫为你收集整理的mysql sequencegenerator_Hibernate基础之五:自增主键@GeneratedValue、@SequenceGenerator | 学步园...的全部内容,希望文章能够帮你解决mysql sequencegenerator_Hibernate基础之五:自增主键@GeneratedValue、@SequenceGenerator | 学步园...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复