Почему сущности не обновляются в postgres - PullRequest
0 голосов
/ 28 июня 2019

Я скачал пустой proj из весеннего инициализатора с зависимостями web, jpa и postgres.

Добавлен этот конфиг в application.properties

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database-platform = org.hibernate.dialect.PostgreSQL94Dialect
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update

и создал класс Test, это все, что у меня есть.

    @Entity
    @Table(name = "tests")
    public class Test {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;

        @Column(length = 200)
        private String author;
    }
}

А затем, когда параметр длины столбца изменяется, в базе данных ничего не происходит.

Я попытался удалить некоторые столбцы и изменить некоторые другие параметры, в результате были получены нулевые операторы SQL «alter table».

Обновление работает, только если добавлен новый столбец (обновление работает только для этого конкретного нового столбца только один раз).

1 Ответ

1 голос
/ 29 июня 2019

из как именно свойство Spring.jpa.hibernate.ddl-auto работает в Spring?

Операция обновления, например, попытается добавить новые столбцы, ограничения и т. Д., Но никогда не удалит столбец или ограничение, которые могли существовать ранее, но больше не являются частью объектной модели из предыдущего запуска.

если вы хотите изменить длину после создания таблицы, вы должны использовать инструмент миграции базы данных более высокого уровня, например flyway или liquibase .

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