jpa设置自增主键_使用jpa在postgresql数据库中创建主键自增表-阿里云开发者社区...

本文介绍了如何在Spring Boot应用中利用JPA和PostgreSQL创建主键自增的表。通过在domain类中定义@Id和@GeneratedValue注解,配合@SequenceGenerator指定序列名,实现了主键自增。示例代码展示了实体类、repository和controller的配置。启动应用后,主键将根据数据库序列自动增长,但存在一个问题,即主键编号从50开始,原因未明。
摘要由CSDN通过智能技术生成

jpa依赖

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.data

spring-data-jpa

domain类

package com.hikvison.test.pgtest.entity;

import java.io.Serializable;

import javax.persistence.*;

import lombok.Data;

/**

* 测试pg数据库的一些性能

* 1. 主键自增

* 2. 高并发锁机制

*

* @date 2018年8月28日 下午7:23:17

*/

@Data

@Entity

@Table(name="test_pg_wushan")

public class TestEntity implements Serializable {

private static final long serialVersionUID = 2672553622864930471L;

@Id

@SequenceGenerator(sequenceName="test_sequence", name="abc" )

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="abc")

@Column(name="id")

private Integer id;

@Column(name="test_name")

private String name;

@Transient

private Integer version;

}

repository类

package com.hikvison.test.pgtest.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.hikvison.test.pgtest.entity.TestEntity;

public interface TestRepository extends JpaRepository {

}

controller类

package com.hikvison.test.pgtest.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import com.hikvison.test.pgtest.entity.TestEntity;

import com.hikvison.test.pgtest.repository.TestRepository;

/**

* 测试用contro

*

* @date 2018年8月28日 下午7:35:25

*/

@Controller

public class TeatController {

@Autowired

TestRepository r ;

@RequestMapping("/")

@ResponseBody

public String test1(){

return "hello";

}

@RequestMapping("/save")

@ResponseBody

public String test2(){

TestEntity te = new TestEntity();

te.setName(System.currentTimeMillis()+"");

r.save(te);

return "success";

}

}

增加数据库链接信息,数据库驱动,spring boot依赖,启动运行即可.

实现主键自增解析:

在domain类中,使用了

@Id

@SequenceGenerator(sequenceName="test_sequence", name="abc" )

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="abc")

@Column(name="id")

private Integer id;

其中:

1) test_sequence:数据库中的序列名,如果不存在,会创建,初始值为1,步长为1(postgresql和oracle一样,依赖序列实现主键的自增)

2)@SequenceGenerator,注意使用此注解声明序列.

有个问题:

我测试的表主键编号从50开始的,没弄清楚为什么.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值