jpa 根据主键生成策略获取id_JPA主键生成策略TABLE,SEQUENCE,IDENTITY,AUTO

4,TABLE:使用一个特定的数据库表格来保存主键(了解)

用法:

@Id

@GeneratedValue(strategy = GenerationType.TABLE, generator="payablemoney_gen")

@TableGenerator(name = "pk_gen",

table="tb_generator",

pkColumnName="gen_name",

valueColumnName="gen_value",

pkColumnValue="PAYABLEMOENY_PK",

allocationSize=1

)

这里应用表tb_generator,定义为 :

CREATE TABLE  tb_generator (

id NUMBER NOT NULL,

gen_name VARCHAR2(255) NOT NULL,

gen_value NUMBER NOT NULL,

PRIMARY KEY(id)

)

插入纪录,供生成主键使用:

INSERT INTO tb_generator(id, gen_name, gen_value)VALUES (1,PAYABLEMOENY_PK', 1);

在主键生成后,这条纪录的value值,按allocationSize递增。

@TableGenerator的定义:

@Target({TYPE, METHOD, FIELD})

@Retention(RUNTIME)

public @interface TableGenerator {

String name();

String table() default "";

String catalog() default "";

String schema() default "";

String pkColumnName() default "";

String valueColumnName() default "";

String pkColumnValue() default "";

int initialValue() default 0;

int allocationSize() default 50;

UniqueConstraint[] uniqueConstraints() default {};

}

其中属性说明:  name:

表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中。  table:

表示表生成策略所持久化的表名,例如,这里表使用的是数据库中的“tb_generator”。  catalog和schema:

具体指定表所在的目录名或是数据库名。  pkColumnName:

属性的值表示在持久化表中,该主键生成策略所对应键值的名称。例如在“tb_generator”中将“gen_name”作为主键的键值  valueColumnName:

属性的值表示在持久化表中,该主键当前所生成的值,它的值将会随着每次创建累加。例如,在“tb_generator”中将“gen_value”作为主键的值  pkColumnValue:

属性的值表示在持久化表中,该生成策略所对应的主键。例如在“tb_generator”表中,将“gen_name”的值为“CUSTOMER_PK”。  initialValue:

表示主键初识值,默认为0。  allocationSize:

表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50。  UniqueConstraint:

与@Table标记中的用法类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值