Postgres中的GeneratedValue

编程入门 行业动态 更新时间:2024-10-23 15:33:41
本文介绍了Postgres中的GeneratedValue的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

@Entity @Audited @Table (name =messages_locale) public class Locale { @Id @GeneratedValue @Getter @Setter //项目Lombok的注释,等同于生成的getter和setter方法 private int id; (...)

我创建干净的新数据库和属性:

< prop key =hibernate.hbm2ddl.auto> create< / b>

在创建数据库之后,为什么会这样(对不起,这个bug几乎浪费了两天) postgres db?:

CREATE SEQUENCE hibernate_sequence INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 2 CACHE 1; ALTER TABLE hibernate_sequence OWNER TO postgres;

我不想要序列,我想只自动增加自动生成的值.. <在PostgreSQL中,自动增量是通过使用 SERIAL 伪类型来处理的。 在执行 CREATE TABLE 时使用此类型。

现在,这个 SERIAL 伪类型创建一个序列。 使用创建的序列处理 PostgreSQL 中的自动增量。 id 列的默认值为 - nextval('your_sequence_name')。

在Hibernate中为用户实体:

@Id @GeneratedValue(strategy = GenerationType.SEQUENCE,generator =users_seq_gen) @SequenceGenerator(name =users_seq_gen,sequenceName =users_id_seq) public Long getId() { return id;

请阅读此处:

www.postgresql/docs/8.4/static/ datatype-numeric.html#DATATYPE-SERIAL

http ://www.neilconway/docs/sequences/

I have my entity class mapped like below:

@Entity @Audited @Table(name="messages_locale") public class Locale { @Id @GeneratedValue @Getter @Setter //Project Lombok's annotations, equal to generated getter and setter method private int id; (...)

I create clean new database ,and properties:

< prop key="hibernate.hbm2ddl.auto" >create < /prop>

WHY THE HELL (Sorry, almost two days wasted on this bug) after created database, i got a sequence in my postgres db?:

CREATE SEQUENCE hibernate_sequence INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 2 CACHE 1; ALTER TABLE hibernate_sequence OWNER TO postgres;

I dont want to have a sequence, I want to have just auto increment auto generated values..

解决方案

In PostgreSQL auto-increment is handled using the SERIAL pseudo type. You use this type when you execute CREATE TABLE.

Now to the point - this SERIAL pseudo type creates a sequence. Autoincrement in PostgreSQL is handled using the created sequence. The default value of the id column becomes - nextval('your_sequence_name').

In Hibernate for an User entity:

@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_seq_gen") @SequenceGenerator(name = "users_seq_gen", sequenceName = "users_id_seq") public Long getId() { return id; }

Read here:

www.postgresql/docs/8.4/static/datatype-numeric.html#DATATYPE-SERIAL

www.neilconway/docs/sequences/

更多推荐

Postgres中的GeneratedValue

本文发布于:2023-10-17 13:07:51,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Postgres   GeneratedValue

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!