我是靠谱客的博主 落后龙猫,最近开发中收集的这篇文章主要介绍mysql sequencegenerator_Hibernate基础之五:自增主键@GeneratedValue、@SequenceGenerator | 学步园...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一:使用默认的自增主键

主键自增有好几种策略: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 | 学步园...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部