Использовать последовательность, созданную Flyway в JPA - PullRequest
0 голосов
/ 29 октября 2018

Я использую настройку Spring Boot 2 / Flyway / Postgres.

Я хочу добиться, чтобы Flyway создал таблицу с последовательностью для автоматической итерации ключей. JPA должен распознать последовательность и использовать ее.

Я позволил Flyway выполнить скрипт PostgreSQL:

CREATE SEQUENCE config_id_seq;

CREATE TABLE config
(
    ID          BIGINT NOT NULL PRIMARY KEY DEFAULT nextval('config_id_seq'),
    DESCRIPTION VARCHAR(500)
);

И это определение сущности:

@Entity
@Table(name = "config")
public class Config {

    @Id
    @SequenceGenerator(name = "config_id_sequence", sequenceName = "config_id_seq")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "config_id_sequence")
    @Column(name = "id")
    private long id;

    @Column(name = "description")
    private String description;

При запуске выдаются следующие ошибки:

Caused by: org.postgresql.util.PSQLException: ERROR: relation "config_id_seq" already exists
Caused by: org.postgresql.util.PSQLException: ERROR: cannot change sequence "config_id_seq"

Моя интерпретация заключается в том, что Flyway успешно выполнил сценарий и создал последовательность. Но JPA хочет создать последовательность впоследствии и терпит неудачу, потому что она уже существует. Пожалуйста, поправьте меня, если я ошибаюсь.

Теперь, как я могу настроить JPA для повторного использования существующей последовательности, если это возможно?

...