Как установить поле автоинкремента в postgresql, отличное от id - PullRequest
0 голосов
/ 24 января 2019

У меня есть id столбец и позиция столбец в таблице postgresql.Я хочу, чтобы позиция была с автоинкрементом, поэтому я добавил position , используя serial тип данных: ALTER TABLE tbl ADD COLUMN position serial;

id       name     position
-------  -------  -------
1        S4       4
2        S2       2
3        S3       3
4        S1       1

Проблема в том, что когда я пытаюсьдля создания нового объекта у меня появляется следующая ошибка: org.postgresql.util.PSQLException: error: PSQLException: ERROR: null value in column "position" violates not-null

Что мне нужно сделать, чтобы установить позиция столбец с автоинкрементом?

Мой простой объект:

public class Stg {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;

    @NotNull
    @Size(max = 20)
    @Column(name = "name", length = 20, nullable = false)
    private String name;

    private Integer position;

1 Ответ

0 голосов
/ 24 января 2019

1st Вам нужно создать последовательность:

CREATE SEQUENCE sys_sequence_name START -9223372036854775808 MINVALUE -9223372036854775808 MAXVALUE 9223372036854775807;

Затем создайте таблицу, но после объявления параметра строки добавьте

CREATE TABLE table_name (

id          bigserial primary key,
var_with_seq    bigint not null default nextval('sys_sequence_name')

nextval ('sys_sequence_name') - это будет использовать последовательность Youсоздано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...