@GeneratedValue和@SequenceGenerator使用方法+例子

本文介绍JPA中主键生成策略的配置方法,通过@GeneratedValue和@SequenceGenerator注解实现自定义序列生成,并提供了一个具体的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@GeneratedValue和@SequenceGenerator是JPA标准注解,GeneratedValue用来定义主键生成策略,SequenceGenerator用来定义一个生成主键的序列;它们要联合使用才有效。

详情见文章 https://jingyan.baidu.com/article/c910274bfbb21ecd361d2da9.html


我使用过的实际例子:

1.因为用到的类很多,将ID抽象出来,声明一个抽象类,先定义主键生成策略@GeneratedValue,同时确定主键生成器的名字generator="instance_sequence"。(一般应该是先定义主键生成器再定义主键生成策略)

public abstract class OracleEntity 
{
/** 公共id */
protected Long id;


/**
* @return the id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="instance_sequence")
public Long getId() {
return id;
}


/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
}

2. 声明要使用的实体类,为该实体类声明主键生成器,定义该主键生成器的序列名 sequenceName = "seq_ecom_istme"

@Entity
@org.hibernate.annotations.Entity(dynamicInsert = true)
@Table(name = "ecom_istme")
@SequenceGenerator(name = "instance_sequence", sequenceName = "seq_ecom_istme", allocationSize = 1)
public class EcomIstmentFeeRuleEntity extends OracleEntity {


3. 前台页面通过框架取出EcomIstmentFeeRuleEntity后,EL 表达式可直接取${id}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值