Как узнать значение ключа @Id таблицы Entity до сохранения?

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

Нужно сохранить большое количество связанных таблиц. И нужно знать значение ключа до сохранения в базу.

Подумал, что можно установить id в виде uuid в конструкторе.

    @Entity
    @Table(name = "dsft_depinfo", schema = "public")
    @NoArgsConstructor
    @Data
    @EqualsAndHashCode
    public class DsftDepInfo {

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue
    private UUID id;
    
    // другие поля

    public DsftDepInfo(...) {
        this.id = Generators.timeBasedGenerator().generate();
        // ...
    }

    }

И при создании таблицы использовать скрипт:

CREATE TABLE table_name 
(
  pkey UUID NOT NULL DEFAULT uuid_generate_v1() , 
  CONSTRAINT pkey_ table_name PRIMARY KEY ( pkey )
)

таким образом у меня будет id до сохранения в базу. на сколько этот путь безопасен и верен при сохранении больших значений (около 10 млн записей)? Или может есть другой более изящный путь?

Ответы

▲ 1

Это возможно сделать, я думаю этот пост вам поможет разобраться.

Если коротко, то вы создаете свой собственный sequense_generator и прописываете кастомную стратегию в аннотации над своим id.