Описать поле auto_increment sequence в entity для postgre

Рейтинг: -1Ответов: 1Опубликовано: 03.07.2023

Таблица описывается таким скриптом

create sequence manual_alias_seq;

create table manual_alias
(
    alias_id                          bigint    DEFAULT nextval('manual_alias_seq') NOT NULL,
    alias_ru                          varchar(255) not null,
    update_date_time                  timestamp default timezone('Europe/Moscow'::text, CURRENT_TIMESTAMP) not null,
    CONSTRAINT manual_alias_pk PRIMARY KEY (alias_id)
);
alter sequence manual_alias_seq OWNED BY manual_alias.alias_id;

записи сохраняются. вручную при постановке данных aliasId автоматически увеличивается на 1. все ок.

как правильно описать поле alias_id в сущности?

вот такой код верен?

@Entity
@Table(name = "manual_alias")

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@EqualsAndHashCode(of = "aliasId")
public class ManualAlias {
    @Id
    @Column(name = "alias_id", insertable = false, updatable = false, columnDefinition="serial")
    private BigInteger aliasId;

    @NotNull
    @Column(name = "alias_ru", nullable = false)
    private String aliasRu;

    @NotNull
    @Column(name = "update_date_time", nullable = false)
    private LocalDateTime updateDateTime;
}

Ответы

▲ 1

касательно таблицы, попробуйте тип данных smallserial/serial/bigserial. Они лучше подходят для таких ID полей. https://postgrespro.ru/docs/postgresql/9.6/datatype-numeric

Касательно кода, поле aliasId уже снабжено аннотацией @Id, зачем @Column ?

Поля aliasRu и updateDateTime уже снабжены аннотацией @NotNull, зачем nullable = false ? https://www.baeldung.com/hibernate-notnull-vs-nullable

В остальном всё должно работать