【01-06】JPA 全局单一主键
2024-08-29 02:28:53
建一张主键表
@Override
public boolean equals(Object o) {
return (o == this || (o instanceof AbstractEntity && uid().equals(((AbstractEntity)o).uid())));
}
CREATE TABLE tb_generator (
id int(20) unsigned NOT NULL auto_increment,
gen_name varchar(255) NOT NULL,
gen_value int(20) NOT NULL,
PRIMARY KEY (id)
)
INSERT INTO tb_generator ( gen_name ,gen_value ) VALUES ( 'CUSTOMER_PK',1);
INSERT INTO tb_generator ( gen_name ,gen_value ) VALUES ( 'CONTACT_PK',100);
指定全局主键
@Id
@GeneratedValue(strategy = GenerationType.TABLE,generator="customer_gen")
@TableGenerator(name = "customer_gen",
table="tb_generator",
pkColumnName="gen_name",
valueColumnName="gen_value",
pkColumnValue="CUSTOMER_PK",
allocationSize=1
)
JPA 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标记中的用法类似
*/
最新文章
- JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
- Java内部类与外部类的那些事
- Consul 启动命令
- linux下用Apache一个IP多个域名建虚拟主机
- 前端基础 - Defer对象
- iOS 5.0 后UIViewController新增:willMoveToParentViewController和didMoveToParentViewCon
- StructLayout特性
- 开源原生JavaScript插件-CJPCD(省市区联动)
- 为什么python适合写爬虫?(python到底有啥好的?!)
- 我的第一个python web开发框架(3)——怎么开始?
- caffe之路-SIGTERM信号捕捉
- 从源码浅析Java中的Lock和AbstractQueuedSynchronizer
- (C++)string类杂记
- [Swift]LeetCode565. 数组嵌套 | Array Nesting
- gitlab 之 项目管理
- MySQL 通讯协议
- MATLAB 按条件进行加和
- zeromq学习记录(六)C语言示例
- php类库安装xml
- 解决mysql控制台查询数据乱码的问题,有图有真相