hibernate使用table生成主键

实体配置:

@Entity
@Table(name 
= "EMPLOYEE")
public class Employee implements java.io.Serializable{
    
    
private Integer employee_id; //人员ID(主键)
    private String employee_name; //人员姓名
    private String sex; //性别
    private String birthday; //出生日期
    private String address; //地址
    
    @Id
    @Column(name 
= "EMPLOYEE_ID")
    @TableGenerator(
         name
="tab-store",
         table
="GENERATOR_TABLE",
         pkColumnName 
= "G_KEY",
         pkColumnValue
="EMPLOYEE_PK",
         valueColumnName 
= "G_VALUE",
         allocationSize
=1
    )
    @GeneratedValue(strategy 
= GenerationType.TABLE,generator="tab-store")
    
public Integer getEmployee_id() {
        
return employee_id;
    }
    
public void setEmployee_id(Integer employee_id) {
        
this.employee_id = employee_id;
    }

 

      @TableGenerator表生成器,将当前主键的值单独保存到一个数据库表中,主键的值每次都是从指定的表中查询来获得,这种生成主键的方式是很常用的。这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题。大象推荐这种方式管理主键,很方便,集中式管理表的主键,而且更换数据库不会造成很大的问题。各属性含义如下:
        name表示该表主键生成策略的名称,这个名字可以自定义,它被引用在@GeneratedValue中设置的"generator"值中
        table表示表生成策略所持久化的表名,说简单点就是一个管理其它表主键的表,本例中,这个表名为GENERATOR_TABLE
        pkColumnName表生成器中的列名,用来存放其它表的主键键名,这个列名是与表中的字段对应的
        pkColumnValue实体表所对应到生成器表中的主键名,这个键名是可以自定义滴
        valueColumnName
表生成器中的列名,实体表主键的下一个值,假设EMPLOYEE表中的EMPLOYEE_ID最大为2,那么此时,生成器表中与实体表主键对应的键名值则为3
        allocationSize表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50

 @GeneratedValue定义主键生成策略,这里因为使用的是TableGenerator,所以,主键的生成策略为GenerationType.TABLE生成主键策略的名称则为前面定义的tab-store

 


 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值