Когда я использую spring.jpa.hibernate.ddl-auto = create, создаются последовательности и таблицы, но когда для этого свойства установлено обновление, создаются только таблицы. Я создал весеннее загрузочное приложение и для БД я использую Postgres. Но когда я проверяю то же самое для базы данных h2 (которая встроена), последовательности и таблицы создаются для значения обновления. Я не могу установить свойство для создания, поскольку оно будет отбрасывать таблицы при перезапуске приложения. Может кто-нибудь, пожалуйста, просветите меня? Заранее спасибо.

0
Mashish091 19 Дек 2019 в 11:18

2 ответа

Вы можете прочитать о ddl-auto-generation в весеннем документе

Ссылка: https: //docs.spring.io/spring-boot/docs/1.0.x-SNAPSHOT/reference/html/howto-database-initialization.html

Или же

https://www.baeldung.com/spring-boot-data-sql-and-schema-sql

0
Aman Kumar Soni 15 Янв 2020 в 10:33

В спящем режиме произошла ошибка, связанная с диалектом Постгреса. Ниже приведен метод в PostgresSQLDialect, чтобы проверить, присутствует ли последовательность в схеме (что, кстати, неверно):

@Override
    public String getQuerySequencesString() {
        return "select relname from pg_class where relkind='S'";
    }

Вышеупомянутый запрос возвращает последовательности, если какая-либо последовательность присутствует в какой-либо схеме в базе данных. И если есть какая-либо схема, содержащая какую-либо последовательность, она не будет создавать последовательности в указанной схеме этой базы данных. Чтобы решить эту проблему, я написал собственный диалект Postgres и изменил запрос на следующий:

@Override
public String getQuerySequencesString() {
    return "select sequencename from pg_catalog.pg_sequences where schemaname='"+schemaName+"'";
}

Это решает проблему, когда ddl-auto настроен на обновление. Последовательности создаются сейчас.

0
Mashish091 11 Фев 2020 в 12:15