JPA学习笔记(4)——使用Table策略来生成主键
来源:互联网 发布:快速看图软件 编辑:程序博客网 时间:2024/05/02 08:22
在上一篇博客中,提到一个注解@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的主键生成策略
- Chisel Tutorial(五)——Bundles与Vecs
- C#多媒体编程
- achartengine 属性
- 二叉树构造
- Android取得已安装的应用列表
- JPA学习笔记(4)——使用Table策略来生成主键
- 第一章 介绍 实体,属性,关系
- redbat mysql重启
- Hibernate中的实体状态(一)
- The Secret to 10 Million Concurrent Connections -The Kernel is the Problem, Not the Solution
- IO流学习笔记2——流的分类
- hdu 2952 Counting Sheep
- 操作系统开发之——Eflags
- 朋友圈看到的一些对点蜡烛的看法