JPA学习笔记(4)——使用Table策略来生成主键
来源:互联网 发布:网络报警电话是多少 编辑:程序博客网 时间:2024/04/29 16:04
在上一篇博客中,提到一个注解@GeneratedValue,用于标注生成主键的策略,其中一种策略就是Table。
注意:这种方法不常用,只有遇到特殊业务需求时才会用到。
关于注解,请参考JPA学习笔记(3)——JPA注解
如何使用Table策略生成主键
使用这种策略,需要创建一张表
表名:ID_GENERATOR
看到这里,肯定会不明所以。后面会慢慢解释
往这张表里面插几条数据
PK_NAME 中,CUSTOMER_ID 表示为CUSTOMER这张表生成ID,它的值为PK_VALUE=1,这个值并不代表CUSTOMER的ID就是1,而是通过一种算法来自动生成ID,而这个算法跟这个PK_VALUE有关。
相同的,STUDENT_ID表示为STUDENT表生成ID,值为10
那么JPA怎么知道要根据这张表来为其他三张表生成ID呢?
根据横纵坐标来定位到PK_VALUE
使用注解来告诉JPA横纵坐标
package com.jpa.helloworld;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import javax.persistence.TableGenerator;@Table(name="T_ORDER")@Entitypublic class Order { @Column(name="ID") @TableGenerator(name="ID_GENERATOR", //生成器名称 table="ID_GENERATOR", //生成器使用的表 pkColumnName="PK_NAME", //表中对应的字段名 pkColumnValue="ORDER_ID", //上述字段的值 valueColumnName="PK_VALUE", //值 //根据上述三个属性,就可以定位到表中的PK_VALUE的值,如:1,10,100 allocationSize=10)//表示主键一次增加10 @GeneratedValue(strategy=GenerationType.TABLE, generator="ID_GENERATOR")//这里的生成器和上面的生成器名称对应 @Id private Integer id; @Column(name="ORDER_NAME") private String orderName; @JoinColumn(name="USER_ID") @ManyToOne private User user; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getOrderName() { return orderName; } public void setOrderName(String orderName) { this.orderName = orderName; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String toString() { return "Order [id=" + id + ", orderName=" + orderName + ", user=" + user + "]"; }}
每次ORDER表增加的记录,主键增加10,如此同时,ID_GENERATOR这张表中,对应的PK_VALUE的值会增加1。但是这个值我们不需要去理会。
到了这一步,就全部完成
0 0
- JPA学习笔记(4)——使用Table策略来生成主键
- JPA学习笔记(4)——使用Table策略来生成主键
- JPA学习笔记(4)——使用Table策略来生成主键
- JPA学习笔记【三】【基本注解,Table主键生成策略】
- 使用注解风格学习Hibernate和JPA的4种主键生成策略
- Hibernate使用JPA主键生成策略
- JPA主键生成策略
- JPA 主键生成策略
- JPA主键生成策略
- JPA主键生成策略
- jpa 主键生成策略
- JPA主键生成策略
- JPA用TABLE生成主键
- JPA 映射主键生成策略
- Jpa主键UUID生成策略
- JPA的主键生成策略
- 使用注解风格学习Hibernate和JPA的主键生成策略
- 使用注解风格学习Hibernate和JPA的主键生成策略
- SpringMVC+Spring4+Mybatis3整合实例
- caffe 中 BLOB的实现
- android stutio 导入项目
- 1Ajax的简单
- 基数排序-java实现
- JPA学习笔记(4)——使用Table策略来生成主键
- 2使用XMLHttpRequest对象
- 用Python求A+B+C
- Python特殊语法:filter、map、reduce、lambda
- js和zclip实现复制内容到剪贴板效果
- Linux驱动子系统之I2C(3)
- ACM新手入门历程
- 压缩一个文件夹
- 3请求参数作为XML发送