为什么实体在Postgres中没有更新

时间:2019-06-28 20:22:51

标签: postgresql hibernate spring-boot

我从spring initializr下载了带有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;
    }
}

然后,当列的length参数更改时,数据库中什么也没有发生。

我试图删除一些列并更改一些其他参数,导致零个“ alter table” SQL语句。

仅当添加了新列时更新才起作用(更新仅在此具体的新列上仅起作用一次)。

1 个答案:

答案 0 :(得分:1)

来自how does exactly spring.jpa.hibernate.ddl-auto property works in Spring?

  

例如,更新操作将尝试添加新的列,约束等,但绝不会删除以前可能存在但不再作为先前运行的对象模型一部分的列或约束。

如果要在创建表之后更改长度,则必须使用更高级别的数据库迁移工具,例如flywayliquibase